qapi-types.h revision 910aea96b67d7f0357f586c47f20848ec435aa1b
1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * schema-defined QAPI types
5 *
6 * Copyright IBM, Corp. 2011
7 *
8 * Authors:
9 *  Anthony Liguori   <aliguori@us.ibm.com>
10 *
11 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
12 * See the COPYING.LIB file in the top-level directory.
13 *
14 */
15
16#ifndef QAPI_TYPES_H
17#define QAPI_TYPES_H
18
19#include <stdbool.h>
20#include <stdint.h>
21
22
23#ifndef QAPI_TYPES_BUILTIN_STRUCT_DECL_H
24#define QAPI_TYPES_BUILTIN_STRUCT_DECL_H
25
26
27typedef struct strList
28{
29    union {
30        char * value;
31        uint64_t padding;
32    };
33    struct strList *next;
34} strList;
35
36typedef struct intList
37{
38    union {
39        int64_t value;
40        uint64_t padding;
41    };
42    struct intList *next;
43} intList;
44
45typedef struct numberList
46{
47    union {
48        double value;
49        uint64_t padding;
50    };
51    struct numberList *next;
52} numberList;
53
54typedef struct boolList
55{
56    union {
57        bool value;
58        uint64_t padding;
59    };
60    struct boolList *next;
61} boolList;
62
63typedef struct int8List
64{
65    union {
66        int8_t value;
67        uint64_t padding;
68    };
69    struct int8List *next;
70} int8List;
71
72typedef struct int16List
73{
74    union {
75        int16_t value;
76        uint64_t padding;
77    };
78    struct int16List *next;
79} int16List;
80
81typedef struct int32List
82{
83    union {
84        int32_t value;
85        uint64_t padding;
86    };
87    struct int32List *next;
88} int32List;
89
90typedef struct int64List
91{
92    union {
93        int64_t value;
94        uint64_t padding;
95    };
96    struct int64List *next;
97} int64List;
98
99typedef struct uint8List
100{
101    union {
102        uint8_t value;
103        uint64_t padding;
104    };
105    struct uint8List *next;
106} uint8List;
107
108typedef struct uint16List
109{
110    union {
111        uint16_t value;
112        uint64_t padding;
113    };
114    struct uint16List *next;
115} uint16List;
116
117typedef struct uint32List
118{
119    union {
120        uint32_t value;
121        uint64_t padding;
122    };
123    struct uint32List *next;
124} uint32List;
125
126typedef struct uint64List
127{
128    union {
129        uint64_t value;
130        uint64_t padding;
131    };
132    struct uint64List *next;
133} uint64List;
134
135#endif /* QAPI_TYPES_BUILTIN_STRUCT_DECL_H */
136
137
138extern const char *ErrorClass_lookup[];
139typedef enum ErrorClass
140{
141    ERROR_CLASS_GENERIC_ERROR = 0,
142    ERROR_CLASS_COMMAND_NOT_FOUND = 1,
143    ERROR_CLASS_DEVICE_ENCRYPTED = 2,
144    ERROR_CLASS_DEVICE_NOT_ACTIVE = 3,
145    ERROR_CLASS_DEVICE_NOT_FOUND = 4,
146    ERROR_CLASS_K_V_M_MISSING_CAP = 5,
147    ERROR_CLASS_MAX = 6,
148} ErrorClass;
149
150typedef struct ErrorClassList
151{
152    union {
153        ErrorClass value;
154        uint64_t padding;
155    };
156    struct ErrorClassList *next;
157} ErrorClassList;
158
159
160typedef struct NameInfo NameInfo;
161
162typedef struct NameInfoList
163{
164    union {
165        NameInfo *value;
166        uint64_t padding;
167    };
168    struct NameInfoList *next;
169} NameInfoList;
170
171
172typedef struct VersionInfo VersionInfo;
173
174typedef struct VersionInfoList
175{
176    union {
177        VersionInfo *value;
178        uint64_t padding;
179    };
180    struct VersionInfoList *next;
181} VersionInfoList;
182
183
184typedef struct KvmInfo KvmInfo;
185
186typedef struct KvmInfoList
187{
188    union {
189        KvmInfo *value;
190        uint64_t padding;
191    };
192    struct KvmInfoList *next;
193} KvmInfoList;
194
195extern const char *RunState_lookup[];
196typedef enum RunState
197{
198    RUN_STATE_DEBUG = 0,
199    RUN_STATE_INMIGRATE = 1,
200    RUN_STATE_INTERNAL_ERROR = 2,
201    RUN_STATE_IO_ERROR = 3,
202    RUN_STATE_PAUSED = 4,
203    RUN_STATE_POSTMIGRATE = 5,
204    RUN_STATE_PRELAUNCH = 6,
205    RUN_STATE_FINISH_MIGRATE = 7,
206    RUN_STATE_RESTORE_VM = 8,
207    RUN_STATE_RUNNING = 9,
208    RUN_STATE_SAVE_VM = 10,
209    RUN_STATE_SHUTDOWN = 11,
210    RUN_STATE_SUSPENDED = 12,
211    RUN_STATE_WATCHDOG = 13,
212    RUN_STATE_GUEST_PANICKED = 14,
213    RUN_STATE_MAX = 15,
214} RunState;
215
216typedef struct RunStateList
217{
218    union {
219        RunState value;
220        uint64_t padding;
221    };
222    struct RunStateList *next;
223} RunStateList;
224
225
226typedef struct SnapshotInfo SnapshotInfo;
227
228typedef struct SnapshotInfoList
229{
230    union {
231        SnapshotInfo *value;
232        uint64_t padding;
233    };
234    struct SnapshotInfoList *next;
235} SnapshotInfoList;
236
237
238typedef struct ImageInfoSpecificQCow2 ImageInfoSpecificQCow2;
239
240typedef struct ImageInfoSpecificQCow2List
241{
242    union {
243        ImageInfoSpecificQCow2 *value;
244        uint64_t padding;
245    };
246    struct ImageInfoSpecificQCow2List *next;
247} ImageInfoSpecificQCow2List;
248
249
250typedef struct ImageInfoSpecificVmdk ImageInfoSpecificVmdk;
251
252typedef struct ImageInfoSpecificVmdkList
253{
254    union {
255        ImageInfoSpecificVmdk *value;
256        uint64_t padding;
257    };
258    struct ImageInfoSpecificVmdkList *next;
259} ImageInfoSpecificVmdkList;
260
261
262typedef struct ImageInfoSpecific ImageInfoSpecific;
263
264typedef struct ImageInfoSpecificList
265{
266    union {
267        ImageInfoSpecific *value;
268        uint64_t padding;
269    };
270    struct ImageInfoSpecificList *next;
271} ImageInfoSpecificList;
272
273extern const char *ImageInfoSpecificKind_lookup[];
274typedef enum ImageInfoSpecificKind
275{
276    IMAGE_INFO_SPECIFIC_KIND_QCOW2 = 0,
277    IMAGE_INFO_SPECIFIC_KIND_VMDK = 1,
278    IMAGE_INFO_SPECIFIC_KIND_MAX = 2,
279} ImageInfoSpecificKind;
280
281
282typedef struct ImageInfo ImageInfo;
283
284typedef struct ImageInfoList
285{
286    union {
287        ImageInfo *value;
288        uint64_t padding;
289    };
290    struct ImageInfoList *next;
291} ImageInfoList;
292
293
294typedef struct ImageCheck ImageCheck;
295
296typedef struct ImageCheckList
297{
298    union {
299        ImageCheck *value;
300        uint64_t padding;
301    };
302    struct ImageCheckList *next;
303} ImageCheckList;
304
305
306typedef struct StatusInfo StatusInfo;
307
308typedef struct StatusInfoList
309{
310    union {
311        StatusInfo *value;
312        uint64_t padding;
313    };
314    struct StatusInfoList *next;
315} StatusInfoList;
316
317
318typedef struct UuidInfo UuidInfo;
319
320typedef struct UuidInfoList
321{
322    union {
323        UuidInfo *value;
324        uint64_t padding;
325    };
326    struct UuidInfoList *next;
327} UuidInfoList;
328
329
330typedef struct ChardevInfo ChardevInfo;
331
332typedef struct ChardevInfoList
333{
334    union {
335        ChardevInfo *value;
336        uint64_t padding;
337    };
338    struct ChardevInfoList *next;
339} ChardevInfoList;
340
341extern const char *DataFormat_lookup[];
342typedef enum DataFormat
343{
344    DATA_FORMAT_UTF8 = 0,
345    DATA_FORMAT_BASE64 = 1,
346    DATA_FORMAT_MAX = 2,
347} DataFormat;
348
349typedef struct DataFormatList
350{
351    union {
352        DataFormat value;
353        uint64_t padding;
354    };
355    struct DataFormatList *next;
356} DataFormatList;
357
358
359typedef struct CommandInfo CommandInfo;
360
361typedef struct CommandInfoList
362{
363    union {
364        CommandInfo *value;
365        uint64_t padding;
366    };
367    struct CommandInfoList *next;
368} CommandInfoList;
369
370
371typedef struct EventInfo EventInfo;
372
373typedef struct EventInfoList
374{
375    union {
376        EventInfo *value;
377        uint64_t padding;
378    };
379    struct EventInfoList *next;
380} EventInfoList;
381
382
383typedef struct MigrationStats MigrationStats;
384
385typedef struct MigrationStatsList
386{
387    union {
388        MigrationStats *value;
389        uint64_t padding;
390    };
391    struct MigrationStatsList *next;
392} MigrationStatsList;
393
394
395typedef struct XBZRLECacheStats XBZRLECacheStats;
396
397typedef struct XBZRLECacheStatsList
398{
399    union {
400        XBZRLECacheStats *value;
401        uint64_t padding;
402    };
403    struct XBZRLECacheStatsList *next;
404} XBZRLECacheStatsList;
405
406
407typedef struct MigrationInfo MigrationInfo;
408
409typedef struct MigrationInfoList
410{
411    union {
412        MigrationInfo *value;
413        uint64_t padding;
414    };
415    struct MigrationInfoList *next;
416} MigrationInfoList;
417
418extern const char *MigrationCapability_lookup[];
419typedef enum MigrationCapability
420{
421    MIGRATION_CAPABILITY_XBZRLE = 0,
422    MIGRATION_CAPABILITY_X_RDMA_PIN_ALL = 1,
423    MIGRATION_CAPABILITY_AUTO_CONVERGE = 2,
424    MIGRATION_CAPABILITY_ZERO_BLOCKS = 3,
425    MIGRATION_CAPABILITY_MAX = 4,
426} MigrationCapability;
427
428typedef struct MigrationCapabilityList
429{
430    union {
431        MigrationCapability value;
432        uint64_t padding;
433    };
434    struct MigrationCapabilityList *next;
435} MigrationCapabilityList;
436
437
438typedef struct MigrationCapabilityStatus MigrationCapabilityStatus;
439
440typedef struct MigrationCapabilityStatusList
441{
442    union {
443        MigrationCapabilityStatus *value;
444        uint64_t padding;
445    };
446    struct MigrationCapabilityStatusList *next;
447} MigrationCapabilityStatusList;
448
449
450typedef struct MouseInfo MouseInfo;
451
452typedef struct MouseInfoList
453{
454    union {
455        MouseInfo *value;
456        uint64_t padding;
457    };
458    struct MouseInfoList *next;
459} MouseInfoList;
460
461
462typedef struct CpuInfo CpuInfo;
463
464typedef struct CpuInfoList
465{
466    union {
467        CpuInfo *value;
468        uint64_t padding;
469    };
470    struct CpuInfoList *next;
471} CpuInfoList;
472
473
474typedef struct BlockDeviceInfo BlockDeviceInfo;
475
476typedef struct BlockDeviceInfoList
477{
478    union {
479        BlockDeviceInfo *value;
480        uint64_t padding;
481    };
482    struct BlockDeviceInfoList *next;
483} BlockDeviceInfoList;
484
485extern const char *BlockDeviceIoStatus_lookup[];
486typedef enum BlockDeviceIoStatus
487{
488    BLOCK_DEVICE_IO_STATUS_OK = 0,
489    BLOCK_DEVICE_IO_STATUS_FAILED = 1,
490    BLOCK_DEVICE_IO_STATUS_NOSPACE = 2,
491    BLOCK_DEVICE_IO_STATUS_MAX = 3,
492} BlockDeviceIoStatus;
493
494typedef struct BlockDeviceIoStatusList
495{
496    union {
497        BlockDeviceIoStatus value;
498        uint64_t padding;
499    };
500    struct BlockDeviceIoStatusList *next;
501} BlockDeviceIoStatusList;
502
503
504typedef struct BlockDeviceMapEntry BlockDeviceMapEntry;
505
506typedef struct BlockDeviceMapEntryList
507{
508    union {
509        BlockDeviceMapEntry *value;
510        uint64_t padding;
511    };
512    struct BlockDeviceMapEntryList *next;
513} BlockDeviceMapEntryList;
514
515
516typedef struct BlockDirtyInfo BlockDirtyInfo;
517
518typedef struct BlockDirtyInfoList
519{
520    union {
521        BlockDirtyInfo *value;
522        uint64_t padding;
523    };
524    struct BlockDirtyInfoList *next;
525} BlockDirtyInfoList;
526
527
528typedef struct BlockInfo BlockInfo;
529
530typedef struct BlockInfoList
531{
532    union {
533        BlockInfo *value;
534        uint64_t padding;
535    };
536    struct BlockInfoList *next;
537} BlockInfoList;
538
539
540typedef struct BlockDeviceStats BlockDeviceStats;
541
542typedef struct BlockDeviceStatsList
543{
544    union {
545        BlockDeviceStats *value;
546        uint64_t padding;
547    };
548    struct BlockDeviceStatsList *next;
549} BlockDeviceStatsList;
550
551
552typedef struct BlockStats BlockStats;
553
554typedef struct BlockStatsList
555{
556    union {
557        BlockStats *value;
558        uint64_t padding;
559    };
560    struct BlockStatsList *next;
561} BlockStatsList;
562
563
564typedef struct VncClientInfo VncClientInfo;
565
566typedef struct VncClientInfoList
567{
568    union {
569        VncClientInfo *value;
570        uint64_t padding;
571    };
572    struct VncClientInfoList *next;
573} VncClientInfoList;
574
575
576typedef struct VncInfo VncInfo;
577
578typedef struct VncInfoList
579{
580    union {
581        VncInfo *value;
582        uint64_t padding;
583    };
584    struct VncInfoList *next;
585} VncInfoList;
586
587
588typedef struct SpiceChannel SpiceChannel;
589
590typedef struct SpiceChannelList
591{
592    union {
593        SpiceChannel *value;
594        uint64_t padding;
595    };
596    struct SpiceChannelList *next;
597} SpiceChannelList;
598
599extern const char *SpiceQueryMouseMode_lookup[];
600typedef enum SpiceQueryMouseMode
601{
602    SPICE_QUERY_MOUSE_MODE_CLIENT = 0,
603    SPICE_QUERY_MOUSE_MODE_SERVER = 1,
604    SPICE_QUERY_MOUSE_MODE_UNKNOWN = 2,
605    SPICE_QUERY_MOUSE_MODE_MAX = 3,
606} SpiceQueryMouseMode;
607
608typedef struct SpiceQueryMouseModeList
609{
610    union {
611        SpiceQueryMouseMode value;
612        uint64_t padding;
613    };
614    struct SpiceQueryMouseModeList *next;
615} SpiceQueryMouseModeList;
616
617
618typedef struct SpiceInfo SpiceInfo;
619
620typedef struct SpiceInfoList
621{
622    union {
623        SpiceInfo *value;
624        uint64_t padding;
625    };
626    struct SpiceInfoList *next;
627} SpiceInfoList;
628
629
630typedef struct BalloonInfo BalloonInfo;
631
632typedef struct BalloonInfoList
633{
634    union {
635        BalloonInfo *value;
636        uint64_t padding;
637    };
638    struct BalloonInfoList *next;
639} BalloonInfoList;
640
641
642typedef struct PciMemoryRange PciMemoryRange;
643
644typedef struct PciMemoryRangeList
645{
646    union {
647        PciMemoryRange *value;
648        uint64_t padding;
649    };
650    struct PciMemoryRangeList *next;
651} PciMemoryRangeList;
652
653
654typedef struct PciMemoryRegion PciMemoryRegion;
655
656typedef struct PciMemoryRegionList
657{
658    union {
659        PciMemoryRegion *value;
660        uint64_t padding;
661    };
662    struct PciMemoryRegionList *next;
663} PciMemoryRegionList;
664
665
666typedef struct PciBridgeInfo PciBridgeInfo;
667
668typedef struct PciBridgeInfoList
669{
670    union {
671        PciBridgeInfo *value;
672        uint64_t padding;
673    };
674    struct PciBridgeInfoList *next;
675} PciBridgeInfoList;
676
677
678typedef struct PciDeviceInfo PciDeviceInfo;
679
680typedef struct PciDeviceInfoList
681{
682    union {
683        PciDeviceInfo *value;
684        uint64_t padding;
685    };
686    struct PciDeviceInfoList *next;
687} PciDeviceInfoList;
688
689
690typedef struct PciInfo PciInfo;
691
692typedef struct PciInfoList
693{
694    union {
695        PciInfo *value;
696        uint64_t padding;
697    };
698    struct PciInfoList *next;
699} PciInfoList;
700
701extern const char *BlockdevOnError_lookup[];
702typedef enum BlockdevOnError
703{
704    BLOCKDEV_ON_ERROR_REPORT = 0,
705    BLOCKDEV_ON_ERROR_IGNORE = 1,
706    BLOCKDEV_ON_ERROR_ENOSPC = 2,
707    BLOCKDEV_ON_ERROR_STOP = 3,
708    BLOCKDEV_ON_ERROR_MAX = 4,
709} BlockdevOnError;
710
711typedef struct BlockdevOnErrorList
712{
713    union {
714        BlockdevOnError value;
715        uint64_t padding;
716    };
717    struct BlockdevOnErrorList *next;
718} BlockdevOnErrorList;
719
720extern const char *MirrorSyncMode_lookup[];
721typedef enum MirrorSyncMode
722{
723    MIRROR_SYNC_MODE_TOP = 0,
724    MIRROR_SYNC_MODE_FULL = 1,
725    MIRROR_SYNC_MODE_NONE = 2,
726    MIRROR_SYNC_MODE_MAX = 3,
727} MirrorSyncMode;
728
729typedef struct MirrorSyncModeList
730{
731    union {
732        MirrorSyncMode value;
733        uint64_t padding;
734    };
735    struct MirrorSyncModeList *next;
736} MirrorSyncModeList;
737
738extern const char *BlockJobType_lookup[];
739typedef enum BlockJobType
740{
741    BLOCK_JOB_TYPE_COMMIT = 0,
742    BLOCK_JOB_TYPE_STREAM = 1,
743    BLOCK_JOB_TYPE_MIRROR = 2,
744    BLOCK_JOB_TYPE_BACKUP = 3,
745    BLOCK_JOB_TYPE_MAX = 4,
746} BlockJobType;
747
748typedef struct BlockJobTypeList
749{
750    union {
751        BlockJobType value;
752        uint64_t padding;
753    };
754    struct BlockJobTypeList *next;
755} BlockJobTypeList;
756
757
758typedef struct BlockJobInfo BlockJobInfo;
759
760typedef struct BlockJobInfoList
761{
762    union {
763        BlockJobInfo *value;
764        uint64_t padding;
765    };
766    struct BlockJobInfoList *next;
767} BlockJobInfoList;
768
769extern const char *NewImageMode_lookup[];
770typedef enum NewImageMode
771{
772    NEW_IMAGE_MODE_EXISTING = 0,
773    NEW_IMAGE_MODE_ABSOLUTE_PATHS = 1,
774    NEW_IMAGE_MODE_MAX = 2,
775} NewImageMode;
776
777typedef struct NewImageModeList
778{
779    union {
780        NewImageMode value;
781        uint64_t padding;
782    };
783    struct NewImageModeList *next;
784} NewImageModeList;
785
786
787typedef struct BlockdevSnapshot BlockdevSnapshot;
788
789typedef struct BlockdevSnapshotList
790{
791    union {
792        BlockdevSnapshot *value;
793        uint64_t padding;
794    };
795    struct BlockdevSnapshotList *next;
796} BlockdevSnapshotList;
797
798
799typedef struct BlockdevSnapshotInternal BlockdevSnapshotInternal;
800
801typedef struct BlockdevSnapshotInternalList
802{
803    union {
804        BlockdevSnapshotInternal *value;
805        uint64_t padding;
806    };
807    struct BlockdevSnapshotInternalList *next;
808} BlockdevSnapshotInternalList;
809
810
811typedef struct DriveBackup DriveBackup;
812
813typedef struct DriveBackupList
814{
815    union {
816        DriveBackup *value;
817        uint64_t padding;
818    };
819    struct DriveBackupList *next;
820} DriveBackupList;
821
822
823typedef struct Abort Abort;
824
825typedef struct AbortList
826{
827    union {
828        Abort *value;
829        uint64_t padding;
830    };
831    struct AbortList *next;
832} AbortList;
833
834
835typedef struct TransactionAction TransactionAction;
836
837typedef struct TransactionActionList
838{
839    union {
840        TransactionAction *value;
841        uint64_t padding;
842    };
843    struct TransactionActionList *next;
844} TransactionActionList;
845
846extern const char *TransactionActionKind_lookup[];
847typedef enum TransactionActionKind
848{
849    TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC = 0,
850    TRANSACTION_ACTION_KIND_DRIVE_BACKUP = 1,
851    TRANSACTION_ACTION_KIND_ABORT = 2,
852    TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC = 3,
853    TRANSACTION_ACTION_KIND_MAX = 4,
854} TransactionActionKind;
855
856
857typedef struct ObjectPropertyInfo ObjectPropertyInfo;
858
859typedef struct ObjectPropertyInfoList
860{
861    union {
862        ObjectPropertyInfo *value;
863        uint64_t padding;
864    };
865    struct ObjectPropertyInfoList *next;
866} ObjectPropertyInfoList;
867
868
869typedef struct ObjectTypeInfo ObjectTypeInfo;
870
871typedef struct ObjectTypeInfoList
872{
873    union {
874        ObjectTypeInfo *value;
875        uint64_t padding;
876    };
877    struct ObjectTypeInfoList *next;
878} ObjectTypeInfoList;
879
880
881typedef struct DevicePropertyInfo DevicePropertyInfo;
882
883typedef struct DevicePropertyInfoList
884{
885    union {
886        DevicePropertyInfo *value;
887        uint64_t padding;
888    };
889    struct DevicePropertyInfoList *next;
890} DevicePropertyInfoList;
891
892
893typedef struct NetdevNoneOptions NetdevNoneOptions;
894
895typedef struct NetdevNoneOptionsList
896{
897    union {
898        NetdevNoneOptions *value;
899        uint64_t padding;
900    };
901    struct NetdevNoneOptionsList *next;
902} NetdevNoneOptionsList;
903
904
905typedef struct NetLegacyNicOptions NetLegacyNicOptions;
906
907typedef struct NetLegacyNicOptionsList
908{
909    union {
910        NetLegacyNicOptions *value;
911        uint64_t padding;
912    };
913    struct NetLegacyNicOptionsList *next;
914} NetLegacyNicOptionsList;
915
916
917typedef struct String String;
918
919typedef struct StringList
920{
921    union {
922        String *value;
923        uint64_t padding;
924    };
925    struct StringList *next;
926} StringList;
927
928
929typedef struct NetdevUserOptions NetdevUserOptions;
930
931typedef struct NetdevUserOptionsList
932{
933    union {
934        NetdevUserOptions *value;
935        uint64_t padding;
936    };
937    struct NetdevUserOptionsList *next;
938} NetdevUserOptionsList;
939
940
941typedef struct NetdevTapOptions NetdevTapOptions;
942
943typedef struct NetdevTapOptionsList
944{
945    union {
946        NetdevTapOptions *value;
947        uint64_t padding;
948    };
949    struct NetdevTapOptionsList *next;
950} NetdevTapOptionsList;
951
952
953typedef struct NetdevSocketOptions NetdevSocketOptions;
954
955typedef struct NetdevSocketOptionsList
956{
957    union {
958        NetdevSocketOptions *value;
959        uint64_t padding;
960    };
961    struct NetdevSocketOptionsList *next;
962} NetdevSocketOptionsList;
963
964
965typedef struct NetdevVdeOptions NetdevVdeOptions;
966
967typedef struct NetdevVdeOptionsList
968{
969    union {
970        NetdevVdeOptions *value;
971        uint64_t padding;
972    };
973    struct NetdevVdeOptionsList *next;
974} NetdevVdeOptionsList;
975
976
977typedef struct NetdevDumpOptions NetdevDumpOptions;
978
979typedef struct NetdevDumpOptionsList
980{
981    union {
982        NetdevDumpOptions *value;
983        uint64_t padding;
984    };
985    struct NetdevDumpOptionsList *next;
986} NetdevDumpOptionsList;
987
988
989typedef struct NetdevBridgeOptions NetdevBridgeOptions;
990
991typedef struct NetdevBridgeOptionsList
992{
993    union {
994        NetdevBridgeOptions *value;
995        uint64_t padding;
996    };
997    struct NetdevBridgeOptionsList *next;
998} NetdevBridgeOptionsList;
999
1000
1001typedef struct NetdevHubPortOptions NetdevHubPortOptions;
1002
1003typedef struct NetdevHubPortOptionsList
1004{
1005    union {
1006        NetdevHubPortOptions *value;
1007        uint64_t padding;
1008    };
1009    struct NetdevHubPortOptionsList *next;
1010} NetdevHubPortOptionsList;
1011
1012
1013typedef struct NetdevNetmapOptions NetdevNetmapOptions;
1014
1015typedef struct NetdevNetmapOptionsList
1016{
1017    union {
1018        NetdevNetmapOptions *value;
1019        uint64_t padding;
1020    };
1021    struct NetdevNetmapOptionsList *next;
1022} NetdevNetmapOptionsList;
1023
1024
1025typedef struct NetClientOptions NetClientOptions;
1026
1027typedef struct NetClientOptionsList
1028{
1029    union {
1030        NetClientOptions *value;
1031        uint64_t padding;
1032    };
1033    struct NetClientOptionsList *next;
1034} NetClientOptionsList;
1035
1036extern const char *NetClientOptionsKind_lookup[];
1037typedef enum NetClientOptionsKind
1038{
1039    NET_CLIENT_OPTIONS_KIND_NONE = 0,
1040    NET_CLIENT_OPTIONS_KIND_NIC = 1,
1041    NET_CLIENT_OPTIONS_KIND_USER = 2,
1042    NET_CLIENT_OPTIONS_KIND_TAP = 3,
1043    NET_CLIENT_OPTIONS_KIND_SOCKET = 4,
1044    NET_CLIENT_OPTIONS_KIND_VDE = 5,
1045    NET_CLIENT_OPTIONS_KIND_DUMP = 6,
1046    NET_CLIENT_OPTIONS_KIND_BRIDGE = 7,
1047    NET_CLIENT_OPTIONS_KIND_HUBPORT = 8,
1048    NET_CLIENT_OPTIONS_KIND_NETMAP = 9,
1049    NET_CLIENT_OPTIONS_KIND_MAX = 10,
1050} NetClientOptionsKind;
1051
1052
1053typedef struct NetLegacy NetLegacy;
1054
1055typedef struct NetLegacyList
1056{
1057    union {
1058        NetLegacy *value;
1059        uint64_t padding;
1060    };
1061    struct NetLegacyList *next;
1062} NetLegacyList;
1063
1064
1065typedef struct Netdev Netdev;
1066
1067typedef struct NetdevList
1068{
1069    union {
1070        Netdev *value;
1071        uint64_t padding;
1072    };
1073    struct NetdevList *next;
1074} NetdevList;
1075
1076
1077typedef struct InetSocketAddress InetSocketAddress;
1078
1079typedef struct InetSocketAddressList
1080{
1081    union {
1082        InetSocketAddress *value;
1083        uint64_t padding;
1084    };
1085    struct InetSocketAddressList *next;
1086} InetSocketAddressList;
1087
1088
1089typedef struct UnixSocketAddress UnixSocketAddress;
1090
1091typedef struct UnixSocketAddressList
1092{
1093    union {
1094        UnixSocketAddress *value;
1095        uint64_t padding;
1096    };
1097    struct UnixSocketAddressList *next;
1098} UnixSocketAddressList;
1099
1100
1101typedef struct SocketAddress SocketAddress;
1102
1103typedef struct SocketAddressList
1104{
1105    union {
1106        SocketAddress *value;
1107        uint64_t padding;
1108    };
1109    struct SocketAddressList *next;
1110} SocketAddressList;
1111
1112extern const char *SocketAddressKind_lookup[];
1113typedef enum SocketAddressKind
1114{
1115    SOCKET_ADDRESS_KIND_INET = 0,
1116    SOCKET_ADDRESS_KIND_UNIX = 1,
1117    SOCKET_ADDRESS_KIND_FD = 2,
1118    SOCKET_ADDRESS_KIND_MAX = 3,
1119} SocketAddressKind;
1120
1121
1122typedef struct MachineInfo MachineInfo;
1123
1124typedef struct MachineInfoList
1125{
1126    union {
1127        MachineInfo *value;
1128        uint64_t padding;
1129    };
1130    struct MachineInfoList *next;
1131} MachineInfoList;
1132
1133
1134typedef struct CpuDefinitionInfo CpuDefinitionInfo;
1135
1136typedef struct CpuDefinitionInfoList
1137{
1138    union {
1139        CpuDefinitionInfo *value;
1140        uint64_t padding;
1141    };
1142    struct CpuDefinitionInfoList *next;
1143} CpuDefinitionInfoList;
1144
1145
1146typedef struct AddfdInfo AddfdInfo;
1147
1148typedef struct AddfdInfoList
1149{
1150    union {
1151        AddfdInfo *value;
1152        uint64_t padding;
1153    };
1154    struct AddfdInfoList *next;
1155} AddfdInfoList;
1156
1157
1158typedef struct FdsetFdInfo FdsetFdInfo;
1159
1160typedef struct FdsetFdInfoList
1161{
1162    union {
1163        FdsetFdInfo *value;
1164        uint64_t padding;
1165    };
1166    struct FdsetFdInfoList *next;
1167} FdsetFdInfoList;
1168
1169
1170typedef struct FdsetInfo FdsetInfo;
1171
1172typedef struct FdsetInfoList
1173{
1174    union {
1175        FdsetInfo *value;
1176        uint64_t padding;
1177    };
1178    struct FdsetInfoList *next;
1179} FdsetInfoList;
1180
1181
1182typedef struct TargetInfo TargetInfo;
1183
1184typedef struct TargetInfoList
1185{
1186    union {
1187        TargetInfo *value;
1188        uint64_t padding;
1189    };
1190    struct TargetInfoList *next;
1191} TargetInfoList;
1192
1193extern const char *QKeyCode_lookup[];
1194typedef enum QKeyCode
1195{
1196    Q_KEY_CODE_SHIFT = 0,
1197    Q_KEY_CODE_SHIFT_R = 1,
1198    Q_KEY_CODE_ALT = 2,
1199    Q_KEY_CODE_ALT_R = 3,
1200    Q_KEY_CODE_ALTGR = 4,
1201    Q_KEY_CODE_ALTGR_R = 5,
1202    Q_KEY_CODE_CTRL = 6,
1203    Q_KEY_CODE_CTRL_R = 7,
1204    Q_KEY_CODE_MENU = 8,
1205    Q_KEY_CODE_ESC = 9,
1206    Q_KEY_CODE_1 = 10,
1207    Q_KEY_CODE_2 = 11,
1208    Q_KEY_CODE_3 = 12,
1209    Q_KEY_CODE_4 = 13,
1210    Q_KEY_CODE_5 = 14,
1211    Q_KEY_CODE_6 = 15,
1212    Q_KEY_CODE_7 = 16,
1213    Q_KEY_CODE_8 = 17,
1214    Q_KEY_CODE_9 = 18,
1215    Q_KEY_CODE_0 = 19,
1216    Q_KEY_CODE_MINUS = 20,
1217    Q_KEY_CODE_EQUAL = 21,
1218    Q_KEY_CODE_BACKSPACE = 22,
1219    Q_KEY_CODE_TAB = 23,
1220    Q_KEY_CODE_Q = 24,
1221    Q_KEY_CODE_W = 25,
1222    Q_KEY_CODE_E = 26,
1223    Q_KEY_CODE_R = 27,
1224    Q_KEY_CODE_T = 28,
1225    Q_KEY_CODE_Y = 29,
1226    Q_KEY_CODE_U = 30,
1227    Q_KEY_CODE_I = 31,
1228    Q_KEY_CODE_O = 32,
1229    Q_KEY_CODE_P = 33,
1230    Q_KEY_CODE_BRACKET_LEFT = 34,
1231    Q_KEY_CODE_BRACKET_RIGHT = 35,
1232    Q_KEY_CODE_RET = 36,
1233    Q_KEY_CODE_A = 37,
1234    Q_KEY_CODE_S = 38,
1235    Q_KEY_CODE_D = 39,
1236    Q_KEY_CODE_F = 40,
1237    Q_KEY_CODE_G = 41,
1238    Q_KEY_CODE_H = 42,
1239    Q_KEY_CODE_J = 43,
1240    Q_KEY_CODE_K = 44,
1241    Q_KEY_CODE_L = 45,
1242    Q_KEY_CODE_SEMICOLON = 46,
1243    Q_KEY_CODE_APOSTROPHE = 47,
1244    Q_KEY_CODE_GRAVE_ACCENT = 48,
1245    Q_KEY_CODE_BACKSLASH = 49,
1246    Q_KEY_CODE_Z = 50,
1247    Q_KEY_CODE_X = 51,
1248    Q_KEY_CODE_C = 52,
1249    Q_KEY_CODE_V = 53,
1250    Q_KEY_CODE_B = 54,
1251    Q_KEY_CODE_N = 55,
1252    Q_KEY_CODE_M = 56,
1253    Q_KEY_CODE_COMMA = 57,
1254    Q_KEY_CODE_DOT = 58,
1255    Q_KEY_CODE_SLASH = 59,
1256    Q_KEY_CODE_ASTERISK = 60,
1257    Q_KEY_CODE_SPC = 61,
1258    Q_KEY_CODE_CAPS_LOCK = 62,
1259    Q_KEY_CODE_F1 = 63,
1260    Q_KEY_CODE_F2 = 64,
1261    Q_KEY_CODE_F3 = 65,
1262    Q_KEY_CODE_F4 = 66,
1263    Q_KEY_CODE_F5 = 67,
1264    Q_KEY_CODE_F6 = 68,
1265    Q_KEY_CODE_F7 = 69,
1266    Q_KEY_CODE_F8 = 70,
1267    Q_KEY_CODE_F9 = 71,
1268    Q_KEY_CODE_F10 = 72,
1269    Q_KEY_CODE_NUM_LOCK = 73,
1270    Q_KEY_CODE_SCROLL_LOCK = 74,
1271    Q_KEY_CODE_KP_DIVIDE = 75,
1272    Q_KEY_CODE_KP_MULTIPLY = 76,
1273    Q_KEY_CODE_KP_SUBTRACT = 77,
1274    Q_KEY_CODE_KP_ADD = 78,
1275    Q_KEY_CODE_KP_ENTER = 79,
1276    Q_KEY_CODE_KP_DECIMAL = 80,
1277    Q_KEY_CODE_SYSRQ = 81,
1278    Q_KEY_CODE_KP_0 = 82,
1279    Q_KEY_CODE_KP_1 = 83,
1280    Q_KEY_CODE_KP_2 = 84,
1281    Q_KEY_CODE_KP_3 = 85,
1282    Q_KEY_CODE_KP_4 = 86,
1283    Q_KEY_CODE_KP_5 = 87,
1284    Q_KEY_CODE_KP_6 = 88,
1285    Q_KEY_CODE_KP_7 = 89,
1286    Q_KEY_CODE_KP_8 = 90,
1287    Q_KEY_CODE_KP_9 = 91,
1288    Q_KEY_CODE_LESS = 92,
1289    Q_KEY_CODE_F11 = 93,
1290    Q_KEY_CODE_F12 = 94,
1291    Q_KEY_CODE_PRINT = 95,
1292    Q_KEY_CODE_HOME = 96,
1293    Q_KEY_CODE_PGUP = 97,
1294    Q_KEY_CODE_PGDN = 98,
1295    Q_KEY_CODE_END = 99,
1296    Q_KEY_CODE_LEFT = 100,
1297    Q_KEY_CODE_UP = 101,
1298    Q_KEY_CODE_DOWN = 102,
1299    Q_KEY_CODE_RIGHT = 103,
1300    Q_KEY_CODE_INSERT = 104,
1301    Q_KEY_CODE_DELETE = 105,
1302    Q_KEY_CODE_STOP = 106,
1303    Q_KEY_CODE_AGAIN = 107,
1304    Q_KEY_CODE_PROPS = 108,
1305    Q_KEY_CODE_UNDO = 109,
1306    Q_KEY_CODE_FRONT = 110,
1307    Q_KEY_CODE_COPY = 111,
1308    Q_KEY_CODE_OPEN = 112,
1309    Q_KEY_CODE_PASTE = 113,
1310    Q_KEY_CODE_FIND = 114,
1311    Q_KEY_CODE_CUT = 115,
1312    Q_KEY_CODE_LF = 116,
1313    Q_KEY_CODE_HELP = 117,
1314    Q_KEY_CODE_META_L = 118,
1315    Q_KEY_CODE_META_R = 119,
1316    Q_KEY_CODE_COMPOSE = 120,
1317    Q_KEY_CODE_MAX = 121,
1318} QKeyCode;
1319
1320typedef struct QKeyCodeList
1321{
1322    union {
1323        QKeyCode value;
1324        uint64_t padding;
1325    };
1326    struct QKeyCodeList *next;
1327} QKeyCodeList;
1328
1329
1330typedef struct KeyValue KeyValue;
1331
1332typedef struct KeyValueList
1333{
1334    union {
1335        KeyValue *value;
1336        uint64_t padding;
1337    };
1338    struct KeyValueList *next;
1339} KeyValueList;
1340
1341extern const char *KeyValueKind_lookup[];
1342typedef enum KeyValueKind
1343{
1344    KEY_VALUE_KIND_NUMBER = 0,
1345    KEY_VALUE_KIND_QCODE = 1,
1346    KEY_VALUE_KIND_MAX = 2,
1347} KeyValueKind;
1348
1349
1350typedef struct ChardevFile ChardevFile;
1351
1352typedef struct ChardevFileList
1353{
1354    union {
1355        ChardevFile *value;
1356        uint64_t padding;
1357    };
1358    struct ChardevFileList *next;
1359} ChardevFileList;
1360
1361
1362typedef struct ChardevHostdev ChardevHostdev;
1363
1364typedef struct ChardevHostdevList
1365{
1366    union {
1367        ChardevHostdev *value;
1368        uint64_t padding;
1369    };
1370    struct ChardevHostdevList *next;
1371} ChardevHostdevList;
1372
1373
1374typedef struct ChardevSocket ChardevSocket;
1375
1376typedef struct ChardevSocketList
1377{
1378    union {
1379        ChardevSocket *value;
1380        uint64_t padding;
1381    };
1382    struct ChardevSocketList *next;
1383} ChardevSocketList;
1384
1385
1386typedef struct ChardevUdp ChardevUdp;
1387
1388typedef struct ChardevUdpList
1389{
1390    union {
1391        ChardevUdp *value;
1392        uint64_t padding;
1393    };
1394    struct ChardevUdpList *next;
1395} ChardevUdpList;
1396
1397
1398typedef struct ChardevMux ChardevMux;
1399
1400typedef struct ChardevMuxList
1401{
1402    union {
1403        ChardevMux *value;
1404        uint64_t padding;
1405    };
1406    struct ChardevMuxList *next;
1407} ChardevMuxList;
1408
1409
1410typedef struct ChardevStdio ChardevStdio;
1411
1412typedef struct ChardevStdioList
1413{
1414    union {
1415        ChardevStdio *value;
1416        uint64_t padding;
1417    };
1418    struct ChardevStdioList *next;
1419} ChardevStdioList;
1420
1421
1422typedef struct ChardevSpiceChannel ChardevSpiceChannel;
1423
1424typedef struct ChardevSpiceChannelList
1425{
1426    union {
1427        ChardevSpiceChannel *value;
1428        uint64_t padding;
1429    };
1430    struct ChardevSpiceChannelList *next;
1431} ChardevSpiceChannelList;
1432
1433
1434typedef struct ChardevSpicePort ChardevSpicePort;
1435
1436typedef struct ChardevSpicePortList
1437{
1438    union {
1439        ChardevSpicePort *value;
1440        uint64_t padding;
1441    };
1442    struct ChardevSpicePortList *next;
1443} ChardevSpicePortList;
1444
1445
1446typedef struct ChardevVC ChardevVC;
1447
1448typedef struct ChardevVCList
1449{
1450    union {
1451        ChardevVC *value;
1452        uint64_t padding;
1453    };
1454    struct ChardevVCList *next;
1455} ChardevVCList;
1456
1457
1458typedef struct ChardevRingbuf ChardevRingbuf;
1459
1460typedef struct ChardevRingbufList
1461{
1462    union {
1463        ChardevRingbuf *value;
1464        uint64_t padding;
1465    };
1466    struct ChardevRingbufList *next;
1467} ChardevRingbufList;
1468
1469
1470typedef struct ChardevDummy ChardevDummy;
1471
1472typedef struct ChardevDummyList
1473{
1474    union {
1475        ChardevDummy *value;
1476        uint64_t padding;
1477    };
1478    struct ChardevDummyList *next;
1479} ChardevDummyList;
1480
1481
1482typedef struct ChardevBackend ChardevBackend;
1483
1484typedef struct ChardevBackendList
1485{
1486    union {
1487        ChardevBackend *value;
1488        uint64_t padding;
1489    };
1490    struct ChardevBackendList *next;
1491} ChardevBackendList;
1492
1493extern const char *ChardevBackendKind_lookup[];
1494typedef enum ChardevBackendKind
1495{
1496    CHARDEV_BACKEND_KIND_FILE = 0,
1497    CHARDEV_BACKEND_KIND_SERIAL = 1,
1498    CHARDEV_BACKEND_KIND_PARALLEL = 2,
1499    CHARDEV_BACKEND_KIND_PIPE = 3,
1500    CHARDEV_BACKEND_KIND_SOCKET = 4,
1501    CHARDEV_BACKEND_KIND_UDP = 5,
1502    CHARDEV_BACKEND_KIND_PTY = 6,
1503    CHARDEV_BACKEND_KIND_NULL = 7,
1504    CHARDEV_BACKEND_KIND_MUX = 8,
1505    CHARDEV_BACKEND_KIND_MSMOUSE = 9,
1506    CHARDEV_BACKEND_KIND_BRAILLE = 10,
1507    CHARDEV_BACKEND_KIND_STDIO = 11,
1508    CHARDEV_BACKEND_KIND_CONSOLE = 12,
1509    CHARDEV_BACKEND_KIND_SPICEVMC = 13,
1510    CHARDEV_BACKEND_KIND_SPICEPORT = 14,
1511    CHARDEV_BACKEND_KIND_VC = 15,
1512    CHARDEV_BACKEND_KIND_RINGBUF = 16,
1513    CHARDEV_BACKEND_KIND_MEMORY = 17,
1514    CHARDEV_BACKEND_KIND_MAX = 18,
1515} ChardevBackendKind;
1516
1517
1518typedef struct ChardevReturn ChardevReturn;
1519
1520typedef struct ChardevReturnList
1521{
1522    union {
1523        ChardevReturn *value;
1524        uint64_t padding;
1525    };
1526    struct ChardevReturnList *next;
1527} ChardevReturnList;
1528
1529extern const char *TpmModel_lookup[];
1530typedef enum TpmModel
1531{
1532    TPM_MODEL_TPM_TIS = 0,
1533    TPM_MODEL_MAX = 1,
1534} TpmModel;
1535
1536typedef struct TpmModelList
1537{
1538    union {
1539        TpmModel value;
1540        uint64_t padding;
1541    };
1542    struct TpmModelList *next;
1543} TpmModelList;
1544
1545extern const char *TpmType_lookup[];
1546typedef enum TpmType
1547{
1548    TPM_TYPE_PASSTHROUGH = 0,
1549    TPM_TYPE_MAX = 1,
1550} TpmType;
1551
1552typedef struct TpmTypeList
1553{
1554    union {
1555        TpmType value;
1556        uint64_t padding;
1557    };
1558    struct TpmTypeList *next;
1559} TpmTypeList;
1560
1561
1562typedef struct TPMPassthroughOptions TPMPassthroughOptions;
1563
1564typedef struct TPMPassthroughOptionsList
1565{
1566    union {
1567        TPMPassthroughOptions *value;
1568        uint64_t padding;
1569    };
1570    struct TPMPassthroughOptionsList *next;
1571} TPMPassthroughOptionsList;
1572
1573
1574typedef struct TpmTypeOptions TpmTypeOptions;
1575
1576typedef struct TpmTypeOptionsList
1577{
1578    union {
1579        TpmTypeOptions *value;
1580        uint64_t padding;
1581    };
1582    struct TpmTypeOptionsList *next;
1583} TpmTypeOptionsList;
1584
1585extern const char *TpmTypeOptionsKind_lookup[];
1586typedef enum TpmTypeOptionsKind
1587{
1588    TPM_TYPE_OPTIONS_KIND_PASSTHROUGH = 0,
1589    TPM_TYPE_OPTIONS_KIND_MAX = 1,
1590} TpmTypeOptionsKind;
1591
1592
1593typedef struct TPMInfo TPMInfo;
1594
1595typedef struct TPMInfoList
1596{
1597    union {
1598        TPMInfo *value;
1599        uint64_t padding;
1600    };
1601    struct TPMInfoList *next;
1602} TPMInfoList;
1603
1604
1605typedef struct AcpiTableOptions AcpiTableOptions;
1606
1607typedef struct AcpiTableOptionsList
1608{
1609    union {
1610        AcpiTableOptions *value;
1611        uint64_t padding;
1612    };
1613    struct AcpiTableOptionsList *next;
1614} AcpiTableOptionsList;
1615
1616extern const char *CommandLineParameterType_lookup[];
1617typedef enum CommandLineParameterType
1618{
1619    COMMAND_LINE_PARAMETER_TYPE_STRING = 0,
1620    COMMAND_LINE_PARAMETER_TYPE_BOOLEAN = 1,
1621    COMMAND_LINE_PARAMETER_TYPE_NUMBER = 2,
1622    COMMAND_LINE_PARAMETER_TYPE_SIZE = 3,
1623    COMMAND_LINE_PARAMETER_TYPE_MAX = 4,
1624} CommandLineParameterType;
1625
1626typedef struct CommandLineParameterTypeList
1627{
1628    union {
1629        CommandLineParameterType value;
1630        uint64_t padding;
1631    };
1632    struct CommandLineParameterTypeList *next;
1633} CommandLineParameterTypeList;
1634
1635
1636typedef struct CommandLineParameterInfo CommandLineParameterInfo;
1637
1638typedef struct CommandLineParameterInfoList
1639{
1640    union {
1641        CommandLineParameterInfo *value;
1642        uint64_t padding;
1643    };
1644    struct CommandLineParameterInfoList *next;
1645} CommandLineParameterInfoList;
1646
1647
1648typedef struct CommandLineOptionInfo CommandLineOptionInfo;
1649
1650typedef struct CommandLineOptionInfoList
1651{
1652    union {
1653        CommandLineOptionInfo *value;
1654        uint64_t padding;
1655    };
1656    struct CommandLineOptionInfoList *next;
1657} CommandLineOptionInfoList;
1658
1659extern const char *X86CPURegister32_lookup[];
1660typedef enum X86CPURegister32
1661{
1662    X86_C_P_U_REGISTER32_EAX = 0,
1663    X86_C_P_U_REGISTER32_EBX = 1,
1664    X86_C_P_U_REGISTER32_ECX = 2,
1665    X86_C_P_U_REGISTER32_EDX = 3,
1666    X86_C_P_U_REGISTER32_ESP = 4,
1667    X86_C_P_U_REGISTER32_EBP = 5,
1668    X86_C_P_U_REGISTER32_ESI = 6,
1669    X86_C_P_U_REGISTER32_EDI = 7,
1670    X86_C_P_U_REGISTER32_MAX = 8,
1671} X86CPURegister32;
1672
1673typedef struct X86CPURegister32List
1674{
1675    union {
1676        X86CPURegister32 value;
1677        uint64_t padding;
1678    };
1679    struct X86CPURegister32List *next;
1680} X86CPURegister32List;
1681
1682
1683typedef struct X86CPUFeatureWordInfo X86CPUFeatureWordInfo;
1684
1685typedef struct X86CPUFeatureWordInfoList
1686{
1687    union {
1688        X86CPUFeatureWordInfo *value;
1689        uint64_t padding;
1690    };
1691    struct X86CPUFeatureWordInfoList *next;
1692} X86CPUFeatureWordInfoList;
1693
1694extern const char *RxState_lookup[];
1695typedef enum RxState
1696{
1697    RX_STATE_NORMAL = 0,
1698    RX_STATE_NONE = 1,
1699    RX_STATE_ALL = 2,
1700    RX_STATE_MAX = 3,
1701} RxState;
1702
1703typedef struct RxStateList
1704{
1705    union {
1706        RxState value;
1707        uint64_t padding;
1708    };
1709    struct RxStateList *next;
1710} RxStateList;
1711
1712
1713typedef struct RxFilterInfo RxFilterInfo;
1714
1715typedef struct RxFilterInfoList
1716{
1717    union {
1718        RxFilterInfo *value;
1719        uint64_t padding;
1720    };
1721    struct RxFilterInfoList *next;
1722} RxFilterInfoList;
1723
1724extern const char *BlockdevDiscardOptions_lookup[];
1725typedef enum BlockdevDiscardOptions
1726{
1727    BLOCKDEV_DISCARD_OPTIONS_IGNORE = 0,
1728    BLOCKDEV_DISCARD_OPTIONS_UNMAP = 1,
1729    BLOCKDEV_DISCARD_OPTIONS_MAX = 2,
1730} BlockdevDiscardOptions;
1731
1732typedef struct BlockdevDiscardOptionsList
1733{
1734    union {
1735        BlockdevDiscardOptions value;
1736        uint64_t padding;
1737    };
1738    struct BlockdevDiscardOptionsList *next;
1739} BlockdevDiscardOptionsList;
1740
1741extern const char *BlockdevAioOptions_lookup[];
1742typedef enum BlockdevAioOptions
1743{
1744    BLOCKDEV_AIO_OPTIONS_THREADS = 0,
1745    BLOCKDEV_AIO_OPTIONS_NATIVE = 1,
1746    BLOCKDEV_AIO_OPTIONS_MAX = 2,
1747} BlockdevAioOptions;
1748
1749typedef struct BlockdevAioOptionsList
1750{
1751    union {
1752        BlockdevAioOptions value;
1753        uint64_t padding;
1754    };
1755    struct BlockdevAioOptionsList *next;
1756} BlockdevAioOptionsList;
1757
1758
1759typedef struct BlockdevCacheOptions BlockdevCacheOptions;
1760
1761typedef struct BlockdevCacheOptionsList
1762{
1763    union {
1764        BlockdevCacheOptions *value;
1765        uint64_t padding;
1766    };
1767    struct BlockdevCacheOptionsList *next;
1768} BlockdevCacheOptionsList;
1769
1770
1771typedef struct BlockdevOptionsBase BlockdevOptionsBase;
1772
1773typedef struct BlockdevOptionsBaseList
1774{
1775    union {
1776        BlockdevOptionsBase *value;
1777        uint64_t padding;
1778    };
1779    struct BlockdevOptionsBaseList *next;
1780} BlockdevOptionsBaseList;
1781
1782
1783typedef struct BlockdevOptionsFile BlockdevOptionsFile;
1784
1785typedef struct BlockdevOptionsFileList
1786{
1787    union {
1788        BlockdevOptionsFile *value;
1789        uint64_t padding;
1790    };
1791    struct BlockdevOptionsFileList *next;
1792} BlockdevOptionsFileList;
1793
1794
1795typedef struct BlockdevOptionsVVFAT BlockdevOptionsVVFAT;
1796
1797typedef struct BlockdevOptionsVVFATList
1798{
1799    union {
1800        BlockdevOptionsVVFAT *value;
1801        uint64_t padding;
1802    };
1803    struct BlockdevOptionsVVFATList *next;
1804} BlockdevOptionsVVFATList;
1805
1806
1807typedef struct BlockdevOptionsGenericFormat BlockdevOptionsGenericFormat;
1808
1809typedef struct BlockdevOptionsGenericFormatList
1810{
1811    union {
1812        BlockdevOptionsGenericFormat *value;
1813        uint64_t padding;
1814    };
1815    struct BlockdevOptionsGenericFormatList *next;
1816} BlockdevOptionsGenericFormatList;
1817
1818
1819typedef struct BlockdevOptionsGenericCOWFormat BlockdevOptionsGenericCOWFormat;
1820
1821typedef struct BlockdevOptionsGenericCOWFormatList
1822{
1823    union {
1824        BlockdevOptionsGenericCOWFormat *value;
1825        uint64_t padding;
1826    };
1827    struct BlockdevOptionsGenericCOWFormatList *next;
1828} BlockdevOptionsGenericCOWFormatList;
1829
1830
1831typedef struct BlockdevOptionsQcow2 BlockdevOptionsQcow2;
1832
1833typedef struct BlockdevOptionsQcow2List
1834{
1835    union {
1836        BlockdevOptionsQcow2 *value;
1837        uint64_t padding;
1838    };
1839    struct BlockdevOptionsQcow2List *next;
1840} BlockdevOptionsQcow2List;
1841
1842
1843typedef struct BlockdevOptions BlockdevOptions;
1844
1845typedef struct BlockdevOptionsList
1846{
1847    union {
1848        BlockdevOptions *value;
1849        uint64_t padding;
1850    };
1851    struct BlockdevOptionsList *next;
1852} BlockdevOptionsList;
1853
1854extern const char *BlockdevOptionsKind_lookup[];
1855typedef enum BlockdevOptionsKind
1856{
1857    BLOCKDEV_OPTIONS_KIND_FILE = 0,
1858    BLOCKDEV_OPTIONS_KIND_HTTP = 1,
1859    BLOCKDEV_OPTIONS_KIND_HTTPS = 2,
1860    BLOCKDEV_OPTIONS_KIND_FTP = 3,
1861    BLOCKDEV_OPTIONS_KIND_FTPS = 4,
1862    BLOCKDEV_OPTIONS_KIND_TFTP = 5,
1863    BLOCKDEV_OPTIONS_KIND_VVFAT = 6,
1864    BLOCKDEV_OPTIONS_KIND_BOCHS = 7,
1865    BLOCKDEV_OPTIONS_KIND_CLOOP = 8,
1866    BLOCKDEV_OPTIONS_KIND_COW = 9,
1867    BLOCKDEV_OPTIONS_KIND_DMG = 10,
1868    BLOCKDEV_OPTIONS_KIND_PARALLELS = 11,
1869    BLOCKDEV_OPTIONS_KIND_QCOW = 12,
1870    BLOCKDEV_OPTIONS_KIND_QCOW2 = 13,
1871    BLOCKDEV_OPTIONS_KIND_QED = 14,
1872    BLOCKDEV_OPTIONS_KIND_RAW = 15,
1873    BLOCKDEV_OPTIONS_KIND_VDI = 16,
1874    BLOCKDEV_OPTIONS_KIND_VHDX = 17,
1875    BLOCKDEV_OPTIONS_KIND_VMDK = 18,
1876    BLOCKDEV_OPTIONS_KIND_VPC = 19,
1877    BLOCKDEV_OPTIONS_KIND_MAX = 20,
1878} BlockdevOptionsKind;
1879
1880
1881typedef struct BlockdevRef BlockdevRef;
1882
1883typedef struct BlockdevRefList
1884{
1885    union {
1886        BlockdevRef *value;
1887        uint64_t padding;
1888    };
1889    struct BlockdevRefList *next;
1890} BlockdevRefList;
1891
1892extern const char *BlockdevRefKind_lookup[];
1893typedef enum BlockdevRefKind
1894{
1895    BLOCKDEV_REF_KIND_DEFINITION = 0,
1896    BLOCKDEV_REF_KIND_REFERENCE = 1,
1897    BLOCKDEV_REF_KIND_MAX = 2,
1898} BlockdevRefKind;
1899
1900#ifndef QAPI_TYPES_BUILTIN_CLEANUP_DECL_H
1901#define QAPI_TYPES_BUILTIN_CLEANUP_DECL_H
1902
1903void qapi_free_strList(strList * obj);
1904void qapi_free_intList(intList * obj);
1905void qapi_free_numberList(numberList * obj);
1906void qapi_free_boolList(boolList * obj);
1907void qapi_free_int8List(int8List * obj);
1908void qapi_free_int16List(int16List * obj);
1909void qapi_free_int32List(int32List * obj);
1910void qapi_free_int64List(int64List * obj);
1911void qapi_free_uint8List(uint8List * obj);
1912void qapi_free_uint16List(uint16List * obj);
1913void qapi_free_uint32List(uint32List * obj);
1914void qapi_free_uint64List(uint64List * obj);
1915
1916#endif /* QAPI_TYPES_BUILTIN_CLEANUP_DECL_H */
1917
1918
1919void qapi_free_ErrorClassList(ErrorClassList * obj);
1920
1921struct NameInfo
1922{
1923    bool has_name;
1924    char * name;
1925};
1926
1927void qapi_free_NameInfoList(NameInfoList * obj);
1928void qapi_free_NameInfo(NameInfo * obj);
1929
1930struct VersionInfo
1931{
1932    struct
1933    {
1934        int64_t major;
1935        int64_t minor;
1936        int64_t micro;
1937    } qemu;
1938    char * package;
1939};
1940
1941void qapi_free_VersionInfoList(VersionInfoList * obj);
1942void qapi_free_VersionInfo(VersionInfo * obj);
1943
1944struct KvmInfo
1945{
1946    bool enabled;
1947    bool present;
1948};
1949
1950void qapi_free_KvmInfoList(KvmInfoList * obj);
1951void qapi_free_KvmInfo(KvmInfo * obj);
1952
1953void qapi_free_RunStateList(RunStateList * obj);
1954
1955struct SnapshotInfo
1956{
1957    char * id;
1958    char * name;
1959    int64_t vm_state_size;
1960    int64_t date_sec;
1961    int64_t date_nsec;
1962    int64_t vm_clock_sec;
1963    int64_t vm_clock_nsec;
1964};
1965
1966void qapi_free_SnapshotInfoList(SnapshotInfoList * obj);
1967void qapi_free_SnapshotInfo(SnapshotInfo * obj);
1968
1969struct ImageInfoSpecificQCow2
1970{
1971    char * compat;
1972    bool has_lazy_refcounts;
1973    bool lazy_refcounts;
1974};
1975
1976void qapi_free_ImageInfoSpecificQCow2List(ImageInfoSpecificQCow2List * obj);
1977void qapi_free_ImageInfoSpecificQCow2(ImageInfoSpecificQCow2 * obj);
1978
1979struct ImageInfoSpecificVmdk
1980{
1981    char * create_type;
1982    int64_t cid;
1983    int64_t parent_cid;
1984    ImageInfoList * extents;
1985};
1986
1987void qapi_free_ImageInfoSpecificVmdkList(ImageInfoSpecificVmdkList * obj);
1988void qapi_free_ImageInfoSpecificVmdk(ImageInfoSpecificVmdk * obj);
1989
1990struct ImageInfoSpecific
1991{
1992    ImageInfoSpecificKind kind;
1993    union {
1994        void *data;
1995        ImageInfoSpecificQCow2 * qcow2;
1996        ImageInfoSpecificVmdk * vmdk;
1997    };
1998};
1999void qapi_free_ImageInfoSpecificList(ImageInfoSpecificList * obj);
2000void qapi_free_ImageInfoSpecific(ImageInfoSpecific * obj);
2001
2002struct ImageInfo
2003{
2004    char * filename;
2005    char * format;
2006    bool has_dirty_flag;
2007    bool dirty_flag;
2008    bool has_actual_size;
2009    int64_t actual_size;
2010    int64_t virtual_size;
2011    bool has_cluster_size;
2012    int64_t cluster_size;
2013    bool has_encrypted;
2014    bool encrypted;
2015    bool has_compressed;
2016    bool compressed;
2017    bool has_backing_filename;
2018    char * backing_filename;
2019    bool has_full_backing_filename;
2020    char * full_backing_filename;
2021    bool has_backing_filename_format;
2022    char * backing_filename_format;
2023    bool has_snapshots;
2024    SnapshotInfoList * snapshots;
2025    bool has_backing_image;
2026    ImageInfo * backing_image;
2027    bool has_format_specific;
2028    ImageInfoSpecific * format_specific;
2029};
2030
2031void qapi_free_ImageInfoList(ImageInfoList * obj);
2032void qapi_free_ImageInfo(ImageInfo * obj);
2033
2034struct ImageCheck
2035{
2036    char * filename;
2037    char * format;
2038    int64_t check_errors;
2039    bool has_image_end_offset;
2040    int64_t image_end_offset;
2041    bool has_corruptions;
2042    int64_t corruptions;
2043    bool has_leaks;
2044    int64_t leaks;
2045    bool has_corruptions_fixed;
2046    int64_t corruptions_fixed;
2047    bool has_leaks_fixed;
2048    int64_t leaks_fixed;
2049    bool has_total_clusters;
2050    int64_t total_clusters;
2051    bool has_allocated_clusters;
2052    int64_t allocated_clusters;
2053    bool has_fragmented_clusters;
2054    int64_t fragmented_clusters;
2055    bool has_compressed_clusters;
2056    int64_t compressed_clusters;
2057};
2058
2059void qapi_free_ImageCheckList(ImageCheckList * obj);
2060void qapi_free_ImageCheck(ImageCheck * obj);
2061
2062struct StatusInfo
2063{
2064    bool running;
2065    bool singlestep;
2066    RunState status;
2067};
2068
2069void qapi_free_StatusInfoList(StatusInfoList * obj);
2070void qapi_free_StatusInfo(StatusInfo * obj);
2071
2072struct UuidInfo
2073{
2074    char * UUID;
2075};
2076
2077void qapi_free_UuidInfoList(UuidInfoList * obj);
2078void qapi_free_UuidInfo(UuidInfo * obj);
2079
2080struct ChardevInfo
2081{
2082    char * label;
2083    char * filename;
2084};
2085
2086void qapi_free_ChardevInfoList(ChardevInfoList * obj);
2087void qapi_free_ChardevInfo(ChardevInfo * obj);
2088
2089void qapi_free_DataFormatList(DataFormatList * obj);
2090
2091struct CommandInfo
2092{
2093    char * name;
2094};
2095
2096void qapi_free_CommandInfoList(CommandInfoList * obj);
2097void qapi_free_CommandInfo(CommandInfo * obj);
2098
2099struct EventInfo
2100{
2101    char * name;
2102};
2103
2104void qapi_free_EventInfoList(EventInfoList * obj);
2105void qapi_free_EventInfo(EventInfo * obj);
2106
2107struct MigrationStats
2108{
2109    int64_t transferred;
2110    int64_t remaining;
2111    int64_t total;
2112    int64_t duplicate;
2113    int64_t skipped;
2114    int64_t normal;
2115    int64_t normal_bytes;
2116    int64_t dirty_pages_rate;
2117    double mbps;
2118};
2119
2120void qapi_free_MigrationStatsList(MigrationStatsList * obj);
2121void qapi_free_MigrationStats(MigrationStats * obj);
2122
2123struct XBZRLECacheStats
2124{
2125    int64_t cache_size;
2126    int64_t bytes;
2127    int64_t pages;
2128    int64_t cache_miss;
2129    int64_t overflow;
2130};
2131
2132void qapi_free_XBZRLECacheStatsList(XBZRLECacheStatsList * obj);
2133void qapi_free_XBZRLECacheStats(XBZRLECacheStats * obj);
2134
2135struct MigrationInfo
2136{
2137    bool has_status;
2138    char * status;
2139    bool has_ram;
2140    MigrationStats * ram;
2141    bool has_disk;
2142    MigrationStats * disk;
2143    bool has_xbzrle_cache;
2144    XBZRLECacheStats * xbzrle_cache;
2145    bool has_total_time;
2146    int64_t total_time;
2147    bool has_expected_downtime;
2148    int64_t expected_downtime;
2149    bool has_downtime;
2150    int64_t downtime;
2151    bool has_setup_time;
2152    int64_t setup_time;
2153};
2154
2155void qapi_free_MigrationInfoList(MigrationInfoList * obj);
2156void qapi_free_MigrationInfo(MigrationInfo * obj);
2157
2158void qapi_free_MigrationCapabilityList(MigrationCapabilityList * obj);
2159
2160struct MigrationCapabilityStatus
2161{
2162    MigrationCapability capability;
2163    bool state;
2164};
2165
2166void qapi_free_MigrationCapabilityStatusList(MigrationCapabilityStatusList * obj);
2167void qapi_free_MigrationCapabilityStatus(MigrationCapabilityStatus * obj);
2168
2169struct MouseInfo
2170{
2171    char * name;
2172    int64_t index;
2173    bool current;
2174    bool absolute;
2175};
2176
2177void qapi_free_MouseInfoList(MouseInfoList * obj);
2178void qapi_free_MouseInfo(MouseInfo * obj);
2179
2180struct CpuInfo
2181{
2182    int64_t CPU;
2183    bool current;
2184    bool halted;
2185    bool has_pc;
2186    int64_t pc;
2187    bool has_nip;
2188    int64_t nip;
2189    bool has_npc;
2190    int64_t npc;
2191    bool has_PC;
2192    int64_t PC;
2193    int64_t thread_id;
2194};
2195
2196void qapi_free_CpuInfoList(CpuInfoList * obj);
2197void qapi_free_CpuInfo(CpuInfo * obj);
2198
2199struct BlockDeviceInfo
2200{
2201    char * file;
2202    bool ro;
2203    char * drv;
2204    bool has_backing_file;
2205    char * backing_file;
2206    int64_t backing_file_depth;
2207    bool encrypted;
2208    bool encryption_key_missing;
2209    int64_t bps;
2210    int64_t bps_rd;
2211    int64_t bps_wr;
2212    int64_t iops;
2213    int64_t iops_rd;
2214    int64_t iops_wr;
2215    ImageInfo * image;
2216    bool has_bps_max;
2217    int64_t bps_max;
2218    bool has_bps_rd_max;
2219    int64_t bps_rd_max;
2220    bool has_bps_wr_max;
2221    int64_t bps_wr_max;
2222    bool has_iops_max;
2223    int64_t iops_max;
2224    bool has_iops_rd_max;
2225    int64_t iops_rd_max;
2226    bool has_iops_wr_max;
2227    int64_t iops_wr_max;
2228    bool has_iops_size;
2229    int64_t iops_size;
2230};
2231
2232void qapi_free_BlockDeviceInfoList(BlockDeviceInfoList * obj);
2233void qapi_free_BlockDeviceInfo(BlockDeviceInfo * obj);
2234
2235void qapi_free_BlockDeviceIoStatusList(BlockDeviceIoStatusList * obj);
2236
2237struct BlockDeviceMapEntry
2238{
2239    int64_t start;
2240    int64_t length;
2241    int64_t depth;
2242    bool zero;
2243    bool data;
2244    bool has_offset;
2245    int64_t offset;
2246};
2247
2248void qapi_free_BlockDeviceMapEntryList(BlockDeviceMapEntryList * obj);
2249void qapi_free_BlockDeviceMapEntry(BlockDeviceMapEntry * obj);
2250
2251struct BlockDirtyInfo
2252{
2253    int64_t count;
2254    int64_t granularity;
2255};
2256
2257void qapi_free_BlockDirtyInfoList(BlockDirtyInfoList * obj);
2258void qapi_free_BlockDirtyInfo(BlockDirtyInfo * obj);
2259
2260struct BlockInfo
2261{
2262    char * device;
2263    char * type;
2264    bool removable;
2265    bool locked;
2266    bool has_inserted;
2267    BlockDeviceInfo * inserted;
2268    bool has_tray_open;
2269    bool tray_open;
2270    bool has_io_status;
2271    BlockDeviceIoStatus io_status;
2272    bool has_dirty_bitmaps;
2273    BlockDirtyInfoList * dirty_bitmaps;
2274};
2275
2276void qapi_free_BlockInfoList(BlockInfoList * obj);
2277void qapi_free_BlockInfo(BlockInfo * obj);
2278
2279struct BlockDeviceStats
2280{
2281    int64_t rd_bytes;
2282    int64_t wr_bytes;
2283    int64_t rd_operations;
2284    int64_t wr_operations;
2285    int64_t flush_operations;
2286    int64_t flush_total_time_ns;
2287    int64_t wr_total_time_ns;
2288    int64_t rd_total_time_ns;
2289    int64_t wr_highest_offset;
2290};
2291
2292void qapi_free_BlockDeviceStatsList(BlockDeviceStatsList * obj);
2293void qapi_free_BlockDeviceStats(BlockDeviceStats * obj);
2294
2295struct BlockStats
2296{
2297    bool has_device;
2298    char * device;
2299    BlockDeviceStats * stats;
2300    bool has_parent;
2301    BlockStats * parent;
2302};
2303
2304void qapi_free_BlockStatsList(BlockStatsList * obj);
2305void qapi_free_BlockStats(BlockStats * obj);
2306
2307struct VncClientInfo
2308{
2309    char * host;
2310    char * family;
2311    char * service;
2312    bool has_x509_dname;
2313    char * x509_dname;
2314    bool has_sasl_username;
2315    char * sasl_username;
2316};
2317
2318void qapi_free_VncClientInfoList(VncClientInfoList * obj);
2319void qapi_free_VncClientInfo(VncClientInfo * obj);
2320
2321struct VncInfo
2322{
2323    bool enabled;
2324    bool has_host;
2325    char * host;
2326    bool has_family;
2327    char * family;
2328    bool has_service;
2329    char * service;
2330    bool has_auth;
2331    char * auth;
2332    bool has_clients;
2333    VncClientInfoList * clients;
2334};
2335
2336void qapi_free_VncInfoList(VncInfoList * obj);
2337void qapi_free_VncInfo(VncInfo * obj);
2338
2339struct SpiceChannel
2340{
2341    char * host;
2342    char * family;
2343    char * port;
2344    int64_t connection_id;
2345    int64_t channel_type;
2346    int64_t channel_id;
2347    bool tls;
2348};
2349
2350void qapi_free_SpiceChannelList(SpiceChannelList * obj);
2351void qapi_free_SpiceChannel(SpiceChannel * obj);
2352
2353void qapi_free_SpiceQueryMouseModeList(SpiceQueryMouseModeList * obj);
2354
2355struct SpiceInfo
2356{
2357    bool enabled;
2358    bool migrated;
2359    bool has_host;
2360    char * host;
2361    bool has_port;
2362    int64_t port;
2363    bool has_tls_port;
2364    int64_t tls_port;
2365    bool has_auth;
2366    char * auth;
2367    bool has_compiled_version;
2368    char * compiled_version;
2369    SpiceQueryMouseMode mouse_mode;
2370    bool has_channels;
2371    SpiceChannelList * channels;
2372};
2373
2374void qapi_free_SpiceInfoList(SpiceInfoList * obj);
2375void qapi_free_SpiceInfo(SpiceInfo * obj);
2376
2377struct BalloonInfo
2378{
2379    int64_t actual;
2380};
2381
2382void qapi_free_BalloonInfoList(BalloonInfoList * obj);
2383void qapi_free_BalloonInfo(BalloonInfo * obj);
2384
2385struct PciMemoryRange
2386{
2387    int64_t base;
2388    int64_t limit;
2389};
2390
2391void qapi_free_PciMemoryRangeList(PciMemoryRangeList * obj);
2392void qapi_free_PciMemoryRange(PciMemoryRange * obj);
2393
2394struct PciMemoryRegion
2395{
2396    int64_t bar;
2397    char * type;
2398    int64_t address;
2399    int64_t size;
2400    bool has_prefetch;
2401    bool prefetch;
2402    bool has_mem_type_64;
2403    bool mem_type_64;
2404};
2405
2406void qapi_free_PciMemoryRegionList(PciMemoryRegionList * obj);
2407void qapi_free_PciMemoryRegion(PciMemoryRegion * obj);
2408
2409struct PciBridgeInfo
2410{
2411    struct
2412    {
2413        int64_t number;
2414        int64_t secondary;
2415        int64_t subordinate;
2416        PciMemoryRange * io_range;
2417        PciMemoryRange * memory_range;
2418        PciMemoryRange * prefetchable_range;
2419    } bus;
2420    bool has_devices;
2421    PciDeviceInfoList * devices;
2422};
2423
2424void qapi_free_PciBridgeInfoList(PciBridgeInfoList * obj);
2425void qapi_free_PciBridgeInfo(PciBridgeInfo * obj);
2426
2427struct PciDeviceInfo
2428{
2429    int64_t bus;
2430    int64_t slot;
2431    int64_t function;
2432    struct
2433    {
2434        bool has_desc;
2435        char * desc;
2436        int64_t q_class;
2437    } class_info;
2438    struct
2439    {
2440        int64_t device;
2441        int64_t vendor;
2442    } id;
2443    bool has_irq;
2444    int64_t irq;
2445    char * qdev_id;
2446    bool has_pci_bridge;
2447    PciBridgeInfo * pci_bridge;
2448    PciMemoryRegionList * regions;
2449};
2450
2451void qapi_free_PciDeviceInfoList(PciDeviceInfoList * obj);
2452void qapi_free_PciDeviceInfo(PciDeviceInfo * obj);
2453
2454struct PciInfo
2455{
2456    int64_t bus;
2457    PciDeviceInfoList * devices;
2458};
2459
2460void qapi_free_PciInfoList(PciInfoList * obj);
2461void qapi_free_PciInfo(PciInfo * obj);
2462
2463void qapi_free_BlockdevOnErrorList(BlockdevOnErrorList * obj);
2464
2465void qapi_free_MirrorSyncModeList(MirrorSyncModeList * obj);
2466
2467void qapi_free_BlockJobTypeList(BlockJobTypeList * obj);
2468
2469struct BlockJobInfo
2470{
2471    char * type;
2472    char * device;
2473    int64_t len;
2474    int64_t offset;
2475    bool busy;
2476    bool paused;
2477    int64_t speed;
2478    BlockDeviceIoStatus io_status;
2479};
2480
2481void qapi_free_BlockJobInfoList(BlockJobInfoList * obj);
2482void qapi_free_BlockJobInfo(BlockJobInfo * obj);
2483
2484void qapi_free_NewImageModeList(NewImageModeList * obj);
2485
2486struct BlockdevSnapshot
2487{
2488    char * device;
2489    char * snapshot_file;
2490    bool has_format;
2491    char * format;
2492    bool has_mode;
2493    NewImageMode mode;
2494};
2495
2496void qapi_free_BlockdevSnapshotList(BlockdevSnapshotList * obj);
2497void qapi_free_BlockdevSnapshot(BlockdevSnapshot * obj);
2498
2499struct BlockdevSnapshotInternal
2500{
2501    char * device;
2502    char * name;
2503};
2504
2505void qapi_free_BlockdevSnapshotInternalList(BlockdevSnapshotInternalList * obj);
2506void qapi_free_BlockdevSnapshotInternal(BlockdevSnapshotInternal * obj);
2507
2508struct DriveBackup
2509{
2510    char * device;
2511    char * target;
2512    bool has_format;
2513    char * format;
2514    MirrorSyncMode sync;
2515    bool has_mode;
2516    NewImageMode mode;
2517    bool has_speed;
2518    int64_t speed;
2519    bool has_on_source_error;
2520    BlockdevOnError on_source_error;
2521    bool has_on_target_error;
2522    BlockdevOnError on_target_error;
2523};
2524
2525void qapi_free_DriveBackupList(DriveBackupList * obj);
2526void qapi_free_DriveBackup(DriveBackup * obj);
2527
2528struct Abort
2529{
2530};
2531
2532void qapi_free_AbortList(AbortList * obj);
2533void qapi_free_Abort(Abort * obj);
2534
2535struct TransactionAction
2536{
2537    TransactionActionKind kind;
2538    union {
2539        void *data;
2540        BlockdevSnapshot * blockdev_snapshot_sync;
2541        DriveBackup * drive_backup;
2542        Abort * abort;
2543        BlockdevSnapshotInternal * blockdev_snapshot_internal_sync;
2544    };
2545};
2546void qapi_free_TransactionActionList(TransactionActionList * obj);
2547void qapi_free_TransactionAction(TransactionAction * obj);
2548
2549struct ObjectPropertyInfo
2550{
2551    char * name;
2552    char * type;
2553};
2554
2555void qapi_free_ObjectPropertyInfoList(ObjectPropertyInfoList * obj);
2556void qapi_free_ObjectPropertyInfo(ObjectPropertyInfo * obj);
2557
2558struct ObjectTypeInfo
2559{
2560    char * name;
2561};
2562
2563void qapi_free_ObjectTypeInfoList(ObjectTypeInfoList * obj);
2564void qapi_free_ObjectTypeInfo(ObjectTypeInfo * obj);
2565
2566struct DevicePropertyInfo
2567{
2568    char * name;
2569    char * type;
2570};
2571
2572void qapi_free_DevicePropertyInfoList(DevicePropertyInfoList * obj);
2573void qapi_free_DevicePropertyInfo(DevicePropertyInfo * obj);
2574
2575struct NetdevNoneOptions
2576{
2577};
2578
2579void qapi_free_NetdevNoneOptionsList(NetdevNoneOptionsList * obj);
2580void qapi_free_NetdevNoneOptions(NetdevNoneOptions * obj);
2581
2582struct NetLegacyNicOptions
2583{
2584    bool has_netdev;
2585    char * netdev;
2586    bool has_macaddr;
2587    char * macaddr;
2588    bool has_model;
2589    char * model;
2590    bool has_addr;
2591    char * addr;
2592    bool has_vectors;
2593    uint32_t vectors;
2594};
2595
2596void qapi_free_NetLegacyNicOptionsList(NetLegacyNicOptionsList * obj);
2597void qapi_free_NetLegacyNicOptions(NetLegacyNicOptions * obj);
2598
2599struct String
2600{
2601    char * str;
2602};
2603
2604void qapi_free_StringList(StringList * obj);
2605void qapi_free_String(String * obj);
2606
2607struct NetdevUserOptions
2608{
2609    bool has_hostname;
2610    char * hostname;
2611    bool has_q_restrict;
2612    bool q_restrict;
2613    bool has_ip;
2614    char * ip;
2615    bool has_net;
2616    char * net;
2617    bool has_host;
2618    char * host;
2619    bool has_tftp;
2620    char * tftp;
2621    bool has_bootfile;
2622    char * bootfile;
2623    bool has_dhcpstart;
2624    char * dhcpstart;
2625    bool has_dns;
2626    char * dns;
2627    bool has_dnssearch;
2628    StringList * dnssearch;
2629    bool has_smb;
2630    char * smb;
2631    bool has_smbserver;
2632    char * smbserver;
2633    bool has_hostfwd;
2634    StringList * hostfwd;
2635    bool has_guestfwd;
2636    StringList * guestfwd;
2637};
2638
2639void qapi_free_NetdevUserOptionsList(NetdevUserOptionsList * obj);
2640void qapi_free_NetdevUserOptions(NetdevUserOptions * obj);
2641
2642struct NetdevTapOptions
2643{
2644    bool has_ifname;
2645    char * ifname;
2646    bool has_fd;
2647    char * fd;
2648    bool has_fds;
2649    char * fds;
2650    bool has_script;
2651    char * script;
2652    bool has_downscript;
2653    char * downscript;
2654    bool has_helper;
2655    char * helper;
2656    bool has_sndbuf;
2657    uint64_t sndbuf;
2658    bool has_vnet_hdr;
2659    bool vnet_hdr;
2660    bool has_vhost;
2661    bool vhost;
2662    bool has_vhostfd;
2663    char * vhostfd;
2664    bool has_vhostfds;
2665    char * vhostfds;
2666    bool has_vhostforce;
2667    bool vhostforce;
2668    bool has_queues;
2669    uint32_t queues;
2670};
2671
2672void qapi_free_NetdevTapOptionsList(NetdevTapOptionsList * obj);
2673void qapi_free_NetdevTapOptions(NetdevTapOptions * obj);
2674
2675struct NetdevSocketOptions
2676{
2677    bool has_fd;
2678    char * fd;
2679    bool has_listen;
2680    char * listen;
2681    bool has_connect;
2682    char * connect;
2683    bool has_mcast;
2684    char * mcast;
2685    bool has_localaddr;
2686    char * localaddr;
2687    bool has_udp;
2688    char * udp;
2689};
2690
2691void qapi_free_NetdevSocketOptionsList(NetdevSocketOptionsList * obj);
2692void qapi_free_NetdevSocketOptions(NetdevSocketOptions * obj);
2693
2694struct NetdevVdeOptions
2695{
2696    bool has_sock;
2697    char * sock;
2698    bool has_port;
2699    uint16_t port;
2700    bool has_group;
2701    char * group;
2702    bool has_mode;
2703    uint16_t mode;
2704};
2705
2706void qapi_free_NetdevVdeOptionsList(NetdevVdeOptionsList * obj);
2707void qapi_free_NetdevVdeOptions(NetdevVdeOptions * obj);
2708
2709struct NetdevDumpOptions
2710{
2711    bool has_len;
2712    uint64_t len;
2713    bool has_file;
2714    char * file;
2715};
2716
2717void qapi_free_NetdevDumpOptionsList(NetdevDumpOptionsList * obj);
2718void qapi_free_NetdevDumpOptions(NetdevDumpOptions * obj);
2719
2720struct NetdevBridgeOptions
2721{
2722    bool has_br;
2723    char * br;
2724    bool has_helper;
2725    char * helper;
2726};
2727
2728void qapi_free_NetdevBridgeOptionsList(NetdevBridgeOptionsList * obj);
2729void qapi_free_NetdevBridgeOptions(NetdevBridgeOptions * obj);
2730
2731struct NetdevHubPortOptions
2732{
2733    int32_t hubid;
2734};
2735
2736void qapi_free_NetdevHubPortOptionsList(NetdevHubPortOptionsList * obj);
2737void qapi_free_NetdevHubPortOptions(NetdevHubPortOptions * obj);
2738
2739struct NetdevNetmapOptions
2740{
2741    char * ifname;
2742    bool has_devname;
2743    char * devname;
2744};
2745
2746void qapi_free_NetdevNetmapOptionsList(NetdevNetmapOptionsList * obj);
2747void qapi_free_NetdevNetmapOptions(NetdevNetmapOptions * obj);
2748
2749struct NetClientOptions
2750{
2751    NetClientOptionsKind kind;
2752    union {
2753        void *data;
2754        NetdevNoneOptions * none;
2755        NetLegacyNicOptions * nic;
2756        NetdevUserOptions * user;
2757        NetdevTapOptions * tap;
2758        NetdevSocketOptions * socket;
2759        NetdevVdeOptions * vde;
2760        NetdevDumpOptions * dump;
2761        NetdevBridgeOptions * bridge;
2762        NetdevHubPortOptions * hubport;
2763        NetdevNetmapOptions * netmap;
2764    };
2765};
2766void qapi_free_NetClientOptionsList(NetClientOptionsList * obj);
2767void qapi_free_NetClientOptions(NetClientOptions * obj);
2768
2769struct NetLegacy
2770{
2771    bool has_vlan;
2772    int32_t vlan;
2773    bool has_id;
2774    char * id;
2775    bool has_name;
2776    char * name;
2777    NetClientOptions * opts;
2778};
2779
2780void qapi_free_NetLegacyList(NetLegacyList * obj);
2781void qapi_free_NetLegacy(NetLegacy * obj);
2782
2783struct Netdev
2784{
2785    char * id;
2786    NetClientOptions * opts;
2787};
2788
2789void qapi_free_NetdevList(NetdevList * obj);
2790void qapi_free_Netdev(Netdev * obj);
2791
2792struct InetSocketAddress
2793{
2794    char * host;
2795    char * port;
2796    bool has_to;
2797    uint16_t to;
2798    bool has_ipv4;
2799    bool ipv4;
2800    bool has_ipv6;
2801    bool ipv6;
2802};
2803
2804void qapi_free_InetSocketAddressList(InetSocketAddressList * obj);
2805void qapi_free_InetSocketAddress(InetSocketAddress * obj);
2806
2807struct UnixSocketAddress
2808{
2809    char * path;
2810};
2811
2812void qapi_free_UnixSocketAddressList(UnixSocketAddressList * obj);
2813void qapi_free_UnixSocketAddress(UnixSocketAddress * obj);
2814
2815struct SocketAddress
2816{
2817    SocketAddressKind kind;
2818    union {
2819        void *data;
2820        InetSocketAddress * inet;
2821        UnixSocketAddress * q_unix;
2822        String * fd;
2823    };
2824};
2825void qapi_free_SocketAddressList(SocketAddressList * obj);
2826void qapi_free_SocketAddress(SocketAddress * obj);
2827
2828struct MachineInfo
2829{
2830    char * name;
2831    bool has_alias;
2832    char * alias;
2833    bool has_is_default;
2834    bool is_default;
2835    int64_t cpu_max;
2836};
2837
2838void qapi_free_MachineInfoList(MachineInfoList * obj);
2839void qapi_free_MachineInfo(MachineInfo * obj);
2840
2841struct CpuDefinitionInfo
2842{
2843    char * name;
2844};
2845
2846void qapi_free_CpuDefinitionInfoList(CpuDefinitionInfoList * obj);
2847void qapi_free_CpuDefinitionInfo(CpuDefinitionInfo * obj);
2848
2849struct AddfdInfo
2850{
2851    int64_t fdset_id;
2852    int64_t fd;
2853};
2854
2855void qapi_free_AddfdInfoList(AddfdInfoList * obj);
2856void qapi_free_AddfdInfo(AddfdInfo * obj);
2857
2858struct FdsetFdInfo
2859{
2860    int64_t fd;
2861    bool has_opaque;
2862    char * opaque;
2863};
2864
2865void qapi_free_FdsetFdInfoList(FdsetFdInfoList * obj);
2866void qapi_free_FdsetFdInfo(FdsetFdInfo * obj);
2867
2868struct FdsetInfo
2869{
2870    int64_t fdset_id;
2871    FdsetFdInfoList * fds;
2872};
2873
2874void qapi_free_FdsetInfoList(FdsetInfoList * obj);
2875void qapi_free_FdsetInfo(FdsetInfo * obj);
2876
2877struct TargetInfo
2878{
2879    char * arch;
2880};
2881
2882void qapi_free_TargetInfoList(TargetInfoList * obj);
2883void qapi_free_TargetInfo(TargetInfo * obj);
2884
2885void qapi_free_QKeyCodeList(QKeyCodeList * obj);
2886
2887struct KeyValue
2888{
2889    KeyValueKind kind;
2890    union {
2891        void *data;
2892        int64_t number;
2893        QKeyCode qcode;
2894    };
2895};
2896void qapi_free_KeyValueList(KeyValueList * obj);
2897void qapi_free_KeyValue(KeyValue * obj);
2898
2899struct ChardevFile
2900{
2901    bool has_in;
2902    char * in;
2903    char * out;
2904};
2905
2906void qapi_free_ChardevFileList(ChardevFileList * obj);
2907void qapi_free_ChardevFile(ChardevFile * obj);
2908
2909struct ChardevHostdev
2910{
2911    char * device;
2912};
2913
2914void qapi_free_ChardevHostdevList(ChardevHostdevList * obj);
2915void qapi_free_ChardevHostdev(ChardevHostdev * obj);
2916
2917struct ChardevSocket
2918{
2919    SocketAddress * addr;
2920    bool has_server;
2921    bool server;
2922    bool has_wait;
2923    bool wait;
2924    bool has_nodelay;
2925    bool nodelay;
2926    bool has_telnet;
2927    bool telnet;
2928};
2929
2930void qapi_free_ChardevSocketList(ChardevSocketList * obj);
2931void qapi_free_ChardevSocket(ChardevSocket * obj);
2932
2933struct ChardevUdp
2934{
2935    SocketAddress * remote;
2936    bool has_local;
2937    SocketAddress * local;
2938};
2939
2940void qapi_free_ChardevUdpList(ChardevUdpList * obj);
2941void qapi_free_ChardevUdp(ChardevUdp * obj);
2942
2943struct ChardevMux
2944{
2945    char * chardev;
2946};
2947
2948void qapi_free_ChardevMuxList(ChardevMuxList * obj);
2949void qapi_free_ChardevMux(ChardevMux * obj);
2950
2951struct ChardevStdio
2952{
2953    bool has_signal;
2954    bool signal;
2955};
2956
2957void qapi_free_ChardevStdioList(ChardevStdioList * obj);
2958void qapi_free_ChardevStdio(ChardevStdio * obj);
2959
2960struct ChardevSpiceChannel
2961{
2962    char * type;
2963};
2964
2965void qapi_free_ChardevSpiceChannelList(ChardevSpiceChannelList * obj);
2966void qapi_free_ChardevSpiceChannel(ChardevSpiceChannel * obj);
2967
2968struct ChardevSpicePort
2969{
2970    char * fqdn;
2971};
2972
2973void qapi_free_ChardevSpicePortList(ChardevSpicePortList * obj);
2974void qapi_free_ChardevSpicePort(ChardevSpicePort * obj);
2975
2976struct ChardevVC
2977{
2978    bool has_width;
2979    int64_t width;
2980    bool has_height;
2981    int64_t height;
2982    bool has_cols;
2983    int64_t cols;
2984    bool has_rows;
2985    int64_t rows;
2986};
2987
2988void qapi_free_ChardevVCList(ChardevVCList * obj);
2989void qapi_free_ChardevVC(ChardevVC * obj);
2990
2991struct ChardevRingbuf
2992{
2993    bool has_size;
2994    int64_t size;
2995};
2996
2997void qapi_free_ChardevRingbufList(ChardevRingbufList * obj);
2998void qapi_free_ChardevRingbuf(ChardevRingbuf * obj);
2999
3000struct ChardevDummy
3001{
3002};
3003
3004void qapi_free_ChardevDummyList(ChardevDummyList * obj);
3005void qapi_free_ChardevDummy(ChardevDummy * obj);
3006
3007struct ChardevBackend
3008{
3009    ChardevBackendKind kind;
3010    union {
3011        void *data;
3012        ChardevFile * file;
3013        ChardevHostdev * serial;
3014        ChardevHostdev * parallel;
3015        ChardevHostdev * pipe;
3016        ChardevSocket * socket;
3017        ChardevUdp * udp;
3018        ChardevDummy * pty;
3019        ChardevDummy * null;
3020        ChardevMux * mux;
3021        ChardevDummy * msmouse;
3022        ChardevDummy * braille;
3023        ChardevStdio * stdio;
3024        ChardevDummy * console;
3025        ChardevSpiceChannel * spicevmc;
3026        ChardevSpicePort * spiceport;
3027        ChardevVC * vc;
3028        ChardevRingbuf * ringbuf;
3029        ChardevRingbuf * memory;
3030    };
3031};
3032void qapi_free_ChardevBackendList(ChardevBackendList * obj);
3033void qapi_free_ChardevBackend(ChardevBackend * obj);
3034
3035struct ChardevReturn
3036{
3037    bool has_pty;
3038    char * pty;
3039};
3040
3041void qapi_free_ChardevReturnList(ChardevReturnList * obj);
3042void qapi_free_ChardevReturn(ChardevReturn * obj);
3043
3044void qapi_free_TpmModelList(TpmModelList * obj);
3045
3046void qapi_free_TpmTypeList(TpmTypeList * obj);
3047
3048struct TPMPassthroughOptions
3049{
3050    bool has_path;
3051    char * path;
3052    bool has_cancel_path;
3053    char * cancel_path;
3054};
3055
3056void qapi_free_TPMPassthroughOptionsList(TPMPassthroughOptionsList * obj);
3057void qapi_free_TPMPassthroughOptions(TPMPassthroughOptions * obj);
3058
3059struct TpmTypeOptions
3060{
3061    TpmTypeOptionsKind kind;
3062    union {
3063        void *data;
3064        TPMPassthroughOptions * passthrough;
3065    };
3066};
3067void qapi_free_TpmTypeOptionsList(TpmTypeOptionsList * obj);
3068void qapi_free_TpmTypeOptions(TpmTypeOptions * obj);
3069
3070struct TPMInfo
3071{
3072    char * id;
3073    TpmModel model;
3074    TpmTypeOptions * options;
3075};
3076
3077void qapi_free_TPMInfoList(TPMInfoList * obj);
3078void qapi_free_TPMInfo(TPMInfo * obj);
3079
3080struct AcpiTableOptions
3081{
3082    bool has_sig;
3083    char * sig;
3084    bool has_rev;
3085    uint8_t rev;
3086    bool has_oem_id;
3087    char * oem_id;
3088    bool has_oem_table_id;
3089    char * oem_table_id;
3090    bool has_oem_rev;
3091    uint32_t oem_rev;
3092    bool has_asl_compiler_id;
3093    char * asl_compiler_id;
3094    bool has_asl_compiler_rev;
3095    uint32_t asl_compiler_rev;
3096    bool has_file;
3097    char * file;
3098    bool has_data;
3099    char * data;
3100};
3101
3102void qapi_free_AcpiTableOptionsList(AcpiTableOptionsList * obj);
3103void qapi_free_AcpiTableOptions(AcpiTableOptions * obj);
3104
3105void qapi_free_CommandLineParameterTypeList(CommandLineParameterTypeList * obj);
3106
3107struct CommandLineParameterInfo
3108{
3109    char * name;
3110    CommandLineParameterType type;
3111    bool has_help;
3112    char * help;
3113};
3114
3115void qapi_free_CommandLineParameterInfoList(CommandLineParameterInfoList * obj);
3116void qapi_free_CommandLineParameterInfo(CommandLineParameterInfo * obj);
3117
3118struct CommandLineOptionInfo
3119{
3120    char * option;
3121    CommandLineParameterInfoList * parameters;
3122};
3123
3124void qapi_free_CommandLineOptionInfoList(CommandLineOptionInfoList * obj);
3125void qapi_free_CommandLineOptionInfo(CommandLineOptionInfo * obj);
3126
3127void qapi_free_X86CPURegister32List(X86CPURegister32List * obj);
3128
3129struct X86CPUFeatureWordInfo
3130{
3131    int64_t cpuid_input_eax;
3132    bool has_cpuid_input_ecx;
3133    int64_t cpuid_input_ecx;
3134    X86CPURegister32 cpuid_register;
3135    int64_t features;
3136};
3137
3138void qapi_free_X86CPUFeatureWordInfoList(X86CPUFeatureWordInfoList * obj);
3139void qapi_free_X86CPUFeatureWordInfo(X86CPUFeatureWordInfo * obj);
3140
3141void qapi_free_RxStateList(RxStateList * obj);
3142
3143struct RxFilterInfo
3144{
3145    char * name;
3146    bool promiscuous;
3147    RxState multicast;
3148    RxState unicast;
3149    bool broadcast_allowed;
3150    bool multicast_overflow;
3151    bool unicast_overflow;
3152    char * main_mac;
3153    intList * vlan_table;
3154    strList * unicast_table;
3155    strList * multicast_table;
3156};
3157
3158void qapi_free_RxFilterInfoList(RxFilterInfoList * obj);
3159void qapi_free_RxFilterInfo(RxFilterInfo * obj);
3160
3161void qapi_free_BlockdevDiscardOptionsList(BlockdevDiscardOptionsList * obj);
3162
3163void qapi_free_BlockdevAioOptionsList(BlockdevAioOptionsList * obj);
3164
3165struct BlockdevCacheOptions
3166{
3167    bool has_writeback;
3168    bool writeback;
3169    bool has_direct;
3170    bool direct;
3171    bool has_no_flush;
3172    bool no_flush;
3173};
3174
3175void qapi_free_BlockdevCacheOptionsList(BlockdevCacheOptionsList * obj);
3176void qapi_free_BlockdevCacheOptions(BlockdevCacheOptions * obj);
3177
3178struct BlockdevOptionsBase
3179{
3180    char * driver;
3181    bool has_id;
3182    char * id;
3183    bool has_discard;
3184    BlockdevDiscardOptions discard;
3185    bool has_cache;
3186    BlockdevCacheOptions * cache;
3187    bool has_aio;
3188    BlockdevAioOptions aio;
3189    bool has_rerror;
3190    BlockdevOnError rerror;
3191    bool has_werror;
3192    BlockdevOnError werror;
3193    bool has_read_only;
3194    bool read_only;
3195};
3196
3197void qapi_free_BlockdevOptionsBaseList(BlockdevOptionsBaseList * obj);
3198void qapi_free_BlockdevOptionsBase(BlockdevOptionsBase * obj);
3199
3200struct BlockdevOptionsFile
3201{
3202    char * filename;
3203};
3204
3205void qapi_free_BlockdevOptionsFileList(BlockdevOptionsFileList * obj);
3206void qapi_free_BlockdevOptionsFile(BlockdevOptionsFile * obj);
3207
3208struct BlockdevOptionsVVFAT
3209{
3210    char * dir;
3211    bool has_fat_type;
3212    int64_t fat_type;
3213    bool has_floppy;
3214    bool floppy;
3215    bool has_rw;
3216    bool rw;
3217};
3218
3219void qapi_free_BlockdevOptionsVVFATList(BlockdevOptionsVVFATList * obj);
3220void qapi_free_BlockdevOptionsVVFAT(BlockdevOptionsVVFAT * obj);
3221
3222struct BlockdevOptionsGenericFormat
3223{
3224    BlockdevRef * file;
3225};
3226
3227void qapi_free_BlockdevOptionsGenericFormatList(BlockdevOptionsGenericFormatList * obj);
3228void qapi_free_BlockdevOptionsGenericFormat(BlockdevOptionsGenericFormat * obj);
3229
3230struct BlockdevOptionsGenericCOWFormat
3231{
3232    BlockdevOptionsGenericFormat * base;
3233    bool has_backing;
3234    BlockdevRef * backing;
3235};
3236
3237void qapi_free_BlockdevOptionsGenericCOWFormatList(BlockdevOptionsGenericCOWFormatList * obj);
3238void qapi_free_BlockdevOptionsGenericCOWFormat(BlockdevOptionsGenericCOWFormat * obj);
3239
3240struct BlockdevOptionsQcow2
3241{
3242    BlockdevOptionsGenericCOWFormat * base;
3243    bool has_lazy_refcounts;
3244    bool lazy_refcounts;
3245    bool has_pass_discard_request;
3246    bool pass_discard_request;
3247    bool has_pass_discard_snapshot;
3248    bool pass_discard_snapshot;
3249    bool has_pass_discard_other;
3250    bool pass_discard_other;
3251};
3252
3253void qapi_free_BlockdevOptionsQcow2List(BlockdevOptionsQcow2List * obj);
3254void qapi_free_BlockdevOptionsQcow2(BlockdevOptionsQcow2 * obj);
3255
3256struct BlockdevOptions
3257{
3258    BlockdevOptionsKind kind;
3259    union {
3260        void *data;
3261        BlockdevOptionsFile * file;
3262        BlockdevOptionsFile * http;
3263        BlockdevOptionsFile * https;
3264        BlockdevOptionsFile * ftp;
3265        BlockdevOptionsFile * ftps;
3266        BlockdevOptionsFile * tftp;
3267        BlockdevOptionsVVFAT * vvfat;
3268        BlockdevOptionsGenericFormat * bochs;
3269        BlockdevOptionsGenericFormat * cloop;
3270        BlockdevOptionsGenericCOWFormat * cow;
3271        BlockdevOptionsGenericFormat * dmg;
3272        BlockdevOptionsGenericFormat * parallels;
3273        BlockdevOptionsGenericCOWFormat * qcow;
3274        BlockdevOptionsQcow2 * qcow2;
3275        BlockdevOptionsGenericCOWFormat * qed;
3276        BlockdevOptionsGenericFormat * raw;
3277        BlockdevOptionsGenericFormat * vdi;
3278        BlockdevOptionsGenericFormat * vhdx;
3279        BlockdevOptionsGenericCOWFormat * vmdk;
3280        BlockdevOptionsGenericFormat * vpc;
3281    };
3282    bool has_id;
3283    char * id;
3284    bool has_discard;
3285    BlockdevDiscardOptions discard;
3286    bool has_cache;
3287    BlockdevCacheOptions * cache;
3288    bool has_aio;
3289    BlockdevAioOptions aio;
3290    bool has_rerror;
3291    BlockdevOnError rerror;
3292    bool has_werror;
3293    BlockdevOnError werror;
3294    bool has_read_only;
3295    bool read_only;
3296};
3297void qapi_free_BlockdevOptionsList(BlockdevOptionsList * obj);
3298void qapi_free_BlockdevOptions(BlockdevOptions * obj);
3299
3300struct BlockdevRef
3301{
3302    BlockdevRefKind kind;
3303    union {
3304        void *data;
3305        BlockdevOptions * definition;
3306        char * reference;
3307    };
3308};
3309extern const int BlockdevRef_qtypes[];
3310void qapi_free_BlockdevRefList(BlockdevRefList * obj);
3311void qapi_free_BlockdevRef(BlockdevRef * obj);
3312
3313#endif
3314