1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * Schema-defined QAPI visitors
5 *
6 * Copyright IBM, Corp. 2011
7 * Copyright (C) 2014-2018 Red Hat, Inc.
8 *
9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10 * See the COPYING.LIB file in the top-level directory.
11 */
12
13#include "qemu/osdep.h"
14#include "qapi/error.h"
15#include "qapi/qmp/qerror.h"
16#include "qapi-visit-migration.h"
17
18void visit_type_MigrationStats_members(Visitor *v, MigrationStats *obj, Error **errp)
19{
20 Error *err = NULL;
21
22 visit_type_int(v, "transferred", &obj->transferred, &err);
23 if (err) {
24 goto out;
25 }
26 visit_type_int(v, "remaining", &obj->remaining, &err);
27 if (err) {
28 goto out;
29 }
30 visit_type_int(v, "total", &obj->total, &err);
31 if (err) {
32 goto out;
33 }
34 visit_type_int(v, "duplicate", &obj->duplicate, &err);
35 if (err) {
36 goto out;
37 }
38 visit_type_int(v, "skipped", &obj->skipped, &err);
39 if (err) {
40 goto out;
41 }
42 visit_type_int(v, "normal", &obj->normal, &err);
43 if (err) {
44 goto out;
45 }
46 visit_type_int(v, "normal-bytes", &obj->normal_bytes, &err);
47 if (err) {
48 goto out;
49 }
50 visit_type_int(v, "dirty-pages-rate", &obj->dirty_pages_rate, &err);
51 if (err) {
52 goto out;
53 }
54 visit_type_number(v, "mbps", &obj->mbps, &err);
55 if (err) {
56 goto out;
57 }
58 visit_type_int(v, "dirty-sync-count", &obj->dirty_sync_count, &err);
59 if (err) {
60 goto out;
61 }
62 visit_type_int(v, "postcopy-requests", &obj->postcopy_requests, &err);
63 if (err) {
64 goto out;
65 }
66 visit_type_int(v, "page-size", &obj->page_size, &err);
67 if (err) {
68 goto out;
69 }
70 visit_type_uint64(v, "multifd-bytes", &obj->multifd_bytes, &err);
71 if (err) {
72 goto out;
73 }
74 visit_type_uint64(v, "pages-per-second", &obj->pages_per_second, &err);
75 if (err) {
76 goto out;
77 }
78
79out:
80 error_propagate(errp, err);
81}
82
83void visit_type_MigrationStats(Visitor *v, const char *name, MigrationStats **obj, Error **errp)
84{
85 Error *err = NULL;
86
87 visit_start_struct(v, name, (void **)obj, sizeof(MigrationStats), &err);
88 if (err) {
89 goto out;
90 }
91 if (!*obj) {
92 goto out_obj;
93 }
94 visit_type_MigrationStats_members(v, *obj, &err);
95 if (err) {
96 goto out_obj;
97 }
98 visit_check_struct(v, &err);
99out_obj:
100 visit_end_struct(v, (void **)obj);
101 if (err && visit_is_input(v)) {
102 qapi_free_MigrationStats(*obj);
103 *obj = NULL;
104 }
105out:
106 error_propagate(errp, err);
107}
108
109void visit_type_XBZRLECacheStats_members(Visitor *v, XBZRLECacheStats *obj, Error **errp)
110{
111 Error *err = NULL;
112
113 visit_type_int(v, "cache-size", &obj->cache_size, &err);
114 if (err) {
115 goto out;
116 }
117 visit_type_int(v, "bytes", &obj->bytes, &err);
118 if (err) {
119 goto out;
120 }
121 visit_type_int(v, "pages", &obj->pages, &err);
122 if (err) {
123 goto out;
124 }
125 visit_type_int(v, "cache-miss", &obj->cache_miss, &err);
126 if (err) {
127 goto out;
128 }
129 visit_type_number(v, "cache-miss-rate", &obj->cache_miss_rate, &err);
130 if (err) {
131 goto out;
132 }
133 visit_type_int(v, "overflow", &obj->overflow, &err);
134 if (err) {
135 goto out;
136 }
137
138out:
139 error_propagate(errp, err);
140}
141
142void visit_type_XBZRLECacheStats(Visitor *v, const char *name, XBZRLECacheStats **obj, Error **errp)
143{
144 Error *err = NULL;
145
146 visit_start_struct(v, name, (void **)obj, sizeof(XBZRLECacheStats), &err);
147 if (err) {
148 goto out;
149 }
150 if (!*obj) {
151 goto out_obj;
152 }
153 visit_type_XBZRLECacheStats_members(v, *obj, &err);
154 if (err) {
155 goto out_obj;
156 }
157 visit_check_struct(v, &err);
158out_obj:
159 visit_end_struct(v, (void **)obj);
160 if (err && visit_is_input(v)) {
161 qapi_free_XBZRLECacheStats(*obj);
162 *obj = NULL;
163 }
164out:
165 error_propagate(errp, err);
166}
167
168void visit_type_CompressionStats_members(Visitor *v, CompressionStats *obj, Error **errp)
169{
170 Error *err = NULL;
171
172 visit_type_int(v, "pages", &obj->pages, &err);
173 if (err) {
174 goto out;
175 }
176 visit_type_int(v, "busy", &obj->busy, &err);
177 if (err) {
178 goto out;
179 }
180 visit_type_number(v, "busy-rate", &obj->busy_rate, &err);
181 if (err) {
182 goto out;
183 }
184 visit_type_int(v, "compressed-size", &obj->compressed_size, &err);
185 if (err) {
186 goto out;
187 }
188 visit_type_number(v, "compression-rate", &obj->compression_rate, &err);
189 if (err) {
190 goto out;
191 }
192
193out:
194 error_propagate(errp, err);
195}
196
197void visit_type_CompressionStats(Visitor *v, const char *name, CompressionStats **obj, Error **errp)
198{
199 Error *err = NULL;
200
201 visit_start_struct(v, name, (void **)obj, sizeof(CompressionStats), &err);
202 if (err) {
203 goto out;
204 }
205 if (!*obj) {
206 goto out_obj;
207 }
208 visit_type_CompressionStats_members(v, *obj, &err);
209 if (err) {
210 goto out_obj;
211 }
212 visit_check_struct(v, &err);
213out_obj:
214 visit_end_struct(v, (void **)obj);
215 if (err && visit_is_input(v)) {
216 qapi_free_CompressionStats(*obj);
217 *obj = NULL;
218 }
219out:
220 error_propagate(errp, err);
221}
222
223void visit_type_MigrationStatus(Visitor *v, const char *name, MigrationStatus *obj, Error **errp)
224{
225 int value = *obj;
226 visit_type_enum(v, name, &value, &MigrationStatus_lookup, errp);
227 *obj = value;
228}
229
230void visit_type_MigrationInfo_members(Visitor *v, MigrationInfo *obj, Error **errp)
231{
232 Error *err = NULL;
233
234 if (visit_optional(v, "status", &obj->has_status)) {
235 visit_type_MigrationStatus(v, "status", &obj->status, &err);
236 if (err) {
237 goto out;
238 }
239 }
240 if (visit_optional(v, "ram", &obj->has_ram)) {
241 visit_type_MigrationStats(v, "ram", &obj->ram, &err);
242 if (err) {
243 goto out;
244 }
245 }
246 if (visit_optional(v, "disk", &obj->has_disk)) {
247 visit_type_MigrationStats(v, "disk", &obj->disk, &err);
248 if (err) {
249 goto out;
250 }
251 }
252 if (visit_optional(v, "xbzrle-cache", &obj->has_xbzrle_cache)) {
253 visit_type_XBZRLECacheStats(v, "xbzrle-cache", &obj->xbzrle_cache, &err);
254 if (err) {
255 goto out;
256 }
257 }
258 if (visit_optional(v, "total-time", &obj->has_total_time)) {
259 visit_type_int(v, "total-time", &obj->total_time, &err);
260 if (err) {
261 goto out;
262 }
263 }
264 if (visit_optional(v, "expected-downtime", &obj->has_expected_downtime)) {
265 visit_type_int(v, "expected-downtime", &obj->expected_downtime, &err);
266 if (err) {
267 goto out;
268 }
269 }
270 if (visit_optional(v, "downtime", &obj->has_downtime)) {
271 visit_type_int(v, "downtime", &obj->downtime, &err);
272 if (err) {
273 goto out;
274 }
275 }
276 if (visit_optional(v, "setup-time", &obj->has_setup_time)) {
277 visit_type_int(v, "setup-time", &obj->setup_time, &err);
278 if (err) {
279 goto out;
280 }
281 }
282 if (visit_optional(v, "cpu-throttle-percentage", &obj->has_cpu_throttle_percentage)) {
283 visit_type_int(v, "cpu-throttle-percentage", &obj->cpu_throttle_percentage, &err);
284 if (err) {
285 goto out;
286 }
287 }
288 if (visit_optional(v, "error-desc", &obj->has_error_desc)) {
289 visit_type_str(v, "error-desc", &obj->error_desc, &err);
290 if (err) {
291 goto out;
292 }
293 }
294 if (visit_optional(v, "postcopy-blocktime", &obj->has_postcopy_blocktime)) {
295 visit_type_uint32(v, "postcopy-blocktime", &obj->postcopy_blocktime, &err);
296 if (err) {
297 goto out;
298 }
299 }
300 if (visit_optional(v, "postcopy-vcpu-blocktime", &obj->has_postcopy_vcpu_blocktime)) {
301 visit_type_uint32List(v, "postcopy-vcpu-blocktime", &obj->postcopy_vcpu_blocktime, &err);
302 if (err) {
303 goto out;
304 }
305 }
306 if (visit_optional(v, "compression", &obj->has_compression)) {
307 visit_type_CompressionStats(v, "compression", &obj->compression, &err);
308 if (err) {
309 goto out;
310 }
311 }
312 if (visit_optional(v, "socket-address", &obj->has_socket_address)) {
313 visit_type_SocketAddressList(v, "socket-address", &obj->socket_address, &err);
314 if (err) {
315 goto out;
316 }
317 }
318
319out:
320 error_propagate(errp, err);
321}
322
323void visit_type_MigrationInfo(Visitor *v, const char *name, MigrationInfo **obj, Error **errp)
324{
325 Error *err = NULL;
326
327 visit_start_struct(v, name, (void **)obj, sizeof(MigrationInfo), &err);
328 if (err) {
329 goto out;
330 }
331 if (!*obj) {
332 goto out_obj;
333 }
334 visit_type_MigrationInfo_members(v, *obj, &err);
335 if (err) {
336 goto out_obj;
337 }
338 visit_check_struct(v, &err);
339out_obj:
340 visit_end_struct(v, (void **)obj);
341 if (err && visit_is_input(v)) {
342 qapi_free_MigrationInfo(*obj);
343 *obj = NULL;
344 }
345out:
346 error_propagate(errp, err);
347}
348
349void visit_type_MigrationCapability(Visitor *v, const char *name, MigrationCapability *obj, Error **errp)
350{
351 int value = *obj;
352 visit_type_enum(v, name, &value, &MigrationCapability_lookup, errp);
353 *obj = value;
354}
355
356void visit_type_MigrationCapabilityStatus_members(Visitor *v, MigrationCapabilityStatus *obj, Error **errp)
357{
358 Error *err = NULL;
359
360 visit_type_MigrationCapability(v, "capability", &obj->capability, &err);
361 if (err) {
362 goto out;
363 }
364 visit_type_bool(v, "state", &obj->state, &err);
365 if (err) {
366 goto out;
367 }
368
369out:
370 error_propagate(errp, err);
371}
372
373void visit_type_MigrationCapabilityStatus(Visitor *v, const char *name, MigrationCapabilityStatus **obj, Error **errp)
374{
375 Error *err = NULL;
376
377 visit_start_struct(v, name, (void **)obj, sizeof(MigrationCapabilityStatus), &err);
378 if (err) {
379 goto out;
380 }
381 if (!*obj) {
382 goto out_obj;
383 }
384 visit_type_MigrationCapabilityStatus_members(v, *obj, &err);
385 if (err) {
386 goto out_obj;
387 }
388 visit_check_struct(v, &err);
389out_obj:
390 visit_end_struct(v, (void **)obj);
391 if (err && visit_is_input(v)) {
392 qapi_free_MigrationCapabilityStatus(*obj);
393 *obj = NULL;
394 }
395out:
396 error_propagate(errp, err);
397}
398
399void visit_type_MigrationCapabilityStatusList(Visitor *v, const char *name, MigrationCapabilityStatusList **obj, Error **errp)
400{
401 Error *err = NULL;
402 MigrationCapabilityStatusList *tail;
403 size_t size = sizeof(**obj);
404
405 visit_start_list(v, name, (GenericList **)obj, size, &err);
406 if (err) {
407 goto out;
408 }
409
410 for (tail = *obj; tail;
411 tail = (MigrationCapabilityStatusList *)visit_next_list(v, (GenericList *)tail, size)) {
412 visit_type_MigrationCapabilityStatus(v, NULL, &tail->value, &err);
413 if (err) {
414 break;
415 }
416 }
417
418 if (!err) {
419 visit_check_list(v, &err);
420 }
421 visit_end_list(v, (void **)obj);
422 if (err && visit_is_input(v)) {
423 qapi_free_MigrationCapabilityStatusList(*obj);
424 *obj = NULL;
425 }
426out:
427 error_propagate(errp, err);
428}
429
430void visit_type_q_obj_migrate_set_capabilities_arg_members(Visitor *v, q_obj_migrate_set_capabilities_arg *obj, Error **errp)
431{
432 Error *err = NULL;
433
434 visit_type_MigrationCapabilityStatusList(v, "capabilities", &obj->capabilities, &err);
435 if (err) {
436 goto out;
437 }
438
439out:
440 error_propagate(errp, err);
441}
442
443void visit_type_MigrationParameter(Visitor *v, const char *name, MigrationParameter *obj, Error **errp)
444{
445 int value = *obj;
446 visit_type_enum(v, name, &value, &MigrationParameter_lookup, errp);
447 *obj = value;
448}
449
450void visit_type_MigrateSetParameters_members(Visitor *v, MigrateSetParameters *obj, Error **errp)
451{
452 Error *err = NULL;
453
454 if (visit_optional(v, "announce-initial", &obj->has_announce_initial)) {
455 visit_type_size(v, "announce-initial", &obj->announce_initial, &err);
456 if (err) {
457 goto out;
458 }
459 }
460 if (visit_optional(v, "announce-max", &obj->has_announce_max)) {
461 visit_type_size(v, "announce-max", &obj->announce_max, &err);
462 if (err) {
463 goto out;
464 }
465 }
466 if (visit_optional(v, "announce-rounds", &obj->has_announce_rounds)) {
467 visit_type_size(v, "announce-rounds", &obj->announce_rounds, &err);
468 if (err) {
469 goto out;
470 }
471 }
472 if (visit_optional(v, "announce-step", &obj->has_announce_step)) {
473 visit_type_size(v, "announce-step", &obj->announce_step, &err);
474 if (err) {
475 goto out;
476 }
477 }
478 if (visit_optional(v, "compress-level", &obj->has_compress_level)) {
479 visit_type_int(v, "compress-level", &obj->compress_level, &err);
480 if (err) {
481 goto out;
482 }
483 }
484 if (visit_optional(v, "compress-threads", &obj->has_compress_threads)) {
485 visit_type_int(v, "compress-threads", &obj->compress_threads, &err);
486 if (err) {
487 goto out;
488 }
489 }
490 if (visit_optional(v, "compress-wait-thread", &obj->has_compress_wait_thread)) {
491 visit_type_bool(v, "compress-wait-thread", &obj->compress_wait_thread, &err);
492 if (err) {
493 goto out;
494 }
495 }
496 if (visit_optional(v, "decompress-threads", &obj->has_decompress_threads)) {
497 visit_type_int(v, "decompress-threads", &obj->decompress_threads, &err);
498 if (err) {
499 goto out;
500 }
501 }
502 if (visit_optional(v, "cpu-throttle-initial", &obj->has_cpu_throttle_initial)) {
503 visit_type_int(v, "cpu-throttle-initial", &obj->cpu_throttle_initial, &err);
504 if (err) {
505 goto out;
506 }
507 }
508 if (visit_optional(v, "cpu-throttle-increment", &obj->has_cpu_throttle_increment)) {
509 visit_type_int(v, "cpu-throttle-increment", &obj->cpu_throttle_increment, &err);
510 if (err) {
511 goto out;
512 }
513 }
514 if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
515 visit_type_StrOrNull(v, "tls-creds", &obj->tls_creds, &err);
516 if (err) {
517 goto out;
518 }
519 }
520 if (visit_optional(v, "tls-hostname", &obj->has_tls_hostname)) {
521 visit_type_StrOrNull(v, "tls-hostname", &obj->tls_hostname, &err);
522 if (err) {
523 goto out;
524 }
525 }
526 if (visit_optional(v, "tls-authz", &obj->has_tls_authz)) {
527 visit_type_StrOrNull(v, "tls-authz", &obj->tls_authz, &err);
528 if (err) {
529 goto out;
530 }
531 }
532 if (visit_optional(v, "max-bandwidth", &obj->has_max_bandwidth)) {
533 visit_type_int(v, "max-bandwidth", &obj->max_bandwidth, &err);
534 if (err) {
535 goto out;
536 }
537 }
538 if (visit_optional(v, "downtime-limit", &obj->has_downtime_limit)) {
539 visit_type_int(v, "downtime-limit", &obj->downtime_limit, &err);
540 if (err) {
541 goto out;
542 }
543 }
544 if (visit_optional(v, "x-checkpoint-delay", &obj->has_x_checkpoint_delay)) {
545 visit_type_int(v, "x-checkpoint-delay", &obj->x_checkpoint_delay, &err);
546 if (err) {
547 goto out;
548 }
549 }
550 if (visit_optional(v, "block-incremental", &obj->has_block_incremental)) {
551 visit_type_bool(v, "block-incremental", &obj->block_incremental, &err);
552 if (err) {
553 goto out;
554 }
555 }
556 if (visit_optional(v, "multifd-channels", &obj->has_multifd_channels)) {
557 visit_type_int(v, "multifd-channels", &obj->multifd_channels, &err);
558 if (err) {
559 goto out;
560 }
561 }
562 if (visit_optional(v, "xbzrle-cache-size", &obj->has_xbzrle_cache_size)) {
563 visit_type_size(v, "xbzrle-cache-size", &obj->xbzrle_cache_size, &err);
564 if (err) {
565 goto out;
566 }
567 }
568 if (visit_optional(v, "max-postcopy-bandwidth", &obj->has_max_postcopy_bandwidth)) {
569 visit_type_size(v, "max-postcopy-bandwidth", &obj->max_postcopy_bandwidth, &err);
570 if (err) {
571 goto out;
572 }
573 }
574 if (visit_optional(v, "max-cpu-throttle", &obj->has_max_cpu_throttle)) {
575 visit_type_int(v, "max-cpu-throttle", &obj->max_cpu_throttle, &err);
576 if (err) {
577 goto out;
578 }
579 }
580
581out:
582 error_propagate(errp, err);
583}
584
585void visit_type_MigrateSetParameters(Visitor *v, const char *name, MigrateSetParameters **obj, Error **errp)
586{
587 Error *err = NULL;
588
589 visit_start_struct(v, name, (void **)obj, sizeof(MigrateSetParameters), &err);
590 if (err) {
591 goto out;
592 }
593 if (!*obj) {
594 goto out_obj;
595 }
596 visit_type_MigrateSetParameters_members(v, *obj, &err);
597 if (err) {
598 goto out_obj;
599 }
600 visit_check_struct(v, &err);
601out_obj:
602 visit_end_struct(v, (void **)obj);
603 if (err && visit_is_input(v)) {
604 qapi_free_MigrateSetParameters(*obj);
605 *obj = NULL;
606 }
607out:
608 error_propagate(errp, err);
609}
610
611void visit_type_MigrationParameters_members(Visitor *v, MigrationParameters *obj, Error **errp)
612{
613 Error *err = NULL;
614
615 if (visit_optional(v, "announce-initial", &obj->has_announce_initial)) {
616 visit_type_size(v, "announce-initial", &obj->announce_initial, &err);
617 if (err) {
618 goto out;
619 }
620 }
621 if (visit_optional(v, "announce-max", &obj->has_announce_max)) {
622 visit_type_size(v, "announce-max", &obj->announce_max, &err);
623 if (err) {
624 goto out;
625 }
626 }
627 if (visit_optional(v, "announce-rounds", &obj->has_announce_rounds)) {
628 visit_type_size(v, "announce-rounds", &obj->announce_rounds, &err);
629 if (err) {
630 goto out;
631 }
632 }
633 if (visit_optional(v, "announce-step", &obj->has_announce_step)) {
634 visit_type_size(v, "announce-step", &obj->announce_step, &err);
635 if (err) {
636 goto out;
637 }
638 }
639 if (visit_optional(v, "compress-level", &obj->has_compress_level)) {
640 visit_type_uint8(v, "compress-level", &obj->compress_level, &err);
641 if (err) {
642 goto out;
643 }
644 }
645 if (visit_optional(v, "compress-threads", &obj->has_compress_threads)) {
646 visit_type_uint8(v, "compress-threads", &obj->compress_threads, &err);
647 if (err) {
648 goto out;
649 }
650 }
651 if (visit_optional(v, "compress-wait-thread", &obj->has_compress_wait_thread)) {
652 visit_type_bool(v, "compress-wait-thread", &obj->compress_wait_thread, &err);
653 if (err) {
654 goto out;
655 }
656 }
657 if (visit_optional(v, "decompress-threads", &obj->has_decompress_threads)) {
658 visit_type_uint8(v, "decompress-threads", &obj->decompress_threads, &err);
659 if (err) {
660 goto out;
661 }
662 }
663 if (visit_optional(v, "cpu-throttle-initial", &obj->has_cpu_throttle_initial)) {
664 visit_type_uint8(v, "cpu-throttle-initial", &obj->cpu_throttle_initial, &err);
665 if (err) {
666 goto out;
667 }
668 }
669 if (visit_optional(v, "cpu-throttle-increment", &obj->has_cpu_throttle_increment)) {
670 visit_type_uint8(v, "cpu-throttle-increment", &obj->cpu_throttle_increment, &err);
671 if (err) {
672 goto out;
673 }
674 }
675 if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
676 visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
677 if (err) {
678 goto out;
679 }
680 }
681 if (visit_optional(v, "tls-hostname", &obj->has_tls_hostname)) {
682 visit_type_str(v, "tls-hostname", &obj->tls_hostname, &err);
683 if (err) {
684 goto out;
685 }
686 }
687 if (visit_optional(v, "tls-authz", &obj->has_tls_authz)) {
688 visit_type_str(v, "tls-authz", &obj->tls_authz, &err);
689 if (err) {
690 goto out;
691 }
692 }
693 if (visit_optional(v, "max-bandwidth", &obj->has_max_bandwidth)) {
694 visit_type_size(v, "max-bandwidth", &obj->max_bandwidth, &err);
695 if (err) {
696 goto out;
697 }
698 }
699 if (visit_optional(v, "downtime-limit", &obj->has_downtime_limit)) {
700 visit_type_uint64(v, "downtime-limit", &obj->downtime_limit, &err);
701 if (err) {
702 goto out;
703 }
704 }
705 if (visit_optional(v, "x-checkpoint-delay", &obj->has_x_checkpoint_delay)) {
706 visit_type_uint32(v, "x-checkpoint-delay", &obj->x_checkpoint_delay, &err);
707 if (err) {
708 goto out;
709 }
710 }
711 if (visit_optional(v, "block-incremental", &obj->has_block_incremental)) {
712 visit_type_bool(v, "block-incremental", &obj->block_incremental, &err);
713 if (err) {
714 goto out;
715 }
716 }
717 if (visit_optional(v, "multifd-channels", &obj->has_multifd_channels)) {
718 visit_type_uint8(v, "multifd-channels", &obj->multifd_channels, &err);
719 if (err) {
720 goto out;
721 }
722 }
723 if (visit_optional(v, "xbzrle-cache-size", &obj->has_xbzrle_cache_size)) {
724 visit_type_size(v, "xbzrle-cache-size", &obj->xbzrle_cache_size, &err);
725 if (err) {
726 goto out;
727 }
728 }
729 if (visit_optional(v, "max-postcopy-bandwidth", &obj->has_max_postcopy_bandwidth)) {
730 visit_type_size(v, "max-postcopy-bandwidth", &obj->max_postcopy_bandwidth, &err);
731 if (err) {
732 goto out;
733 }
734 }
735 if (visit_optional(v, "max-cpu-throttle", &obj->has_max_cpu_throttle)) {
736 visit_type_uint8(v, "max-cpu-throttle", &obj->max_cpu_throttle, &err);
737 if (err) {
738 goto out;
739 }
740 }
741
742out:
743 error_propagate(errp, err);
744}
745
746void visit_type_MigrationParameters(Visitor *v, const char *name, MigrationParameters **obj, Error **errp)
747{
748 Error *err = NULL;
749
750 visit_start_struct(v, name, (void **)obj, sizeof(MigrationParameters), &err);
751 if (err) {
752 goto out;
753 }
754 if (!*obj) {
755 goto out_obj;
756 }
757 visit_type_MigrationParameters_members(v, *obj, &err);
758 if (err) {
759 goto out_obj;
760 }
761 visit_check_struct(v, &err);
762out_obj:
763 visit_end_struct(v, (void **)obj);
764 if (err && visit_is_input(v)) {
765 qapi_free_MigrationParameters(*obj);
766 *obj = NULL;
767 }
768out:
769 error_propagate(errp, err);
770}
771
772void visit_type_q_obj_client_migrate_info_arg_members(Visitor *v, q_obj_client_migrate_info_arg *obj, Error **errp)
773{
774 Error *err = NULL;
775
776 visit_type_str(v, "protocol", &obj->protocol, &err);
777 if (err) {
778 goto out;
779 }
780 visit_type_str(v, "hostname", &obj->hostname, &err);
781 if (err) {
782 goto out;
783 }
784 if (visit_optional(v, "port", &obj->has_port)) {
785 visit_type_int(v, "port", &obj->port, &err);
786 if (err) {
787 goto out;
788 }
789 }
790 if (visit_optional(v, "tls-port", &obj->has_tls_port)) {
791 visit_type_int(v, "tls-port", &obj->tls_port, &err);
792 if (err) {
793 goto out;
794 }
795 }
796 if (visit_optional(v, "cert-subject", &obj->has_cert_subject)) {
797 visit_type_str(v, "cert-subject", &obj->cert_subject, &err);
798 if (err) {
799 goto out;
800 }
801 }
802
803out:
804 error_propagate(errp, err);
805}
806
807void visit_type_q_obj_MIGRATION_arg_members(Visitor *v, q_obj_MIGRATION_arg *obj, Error **errp)
808{
809 Error *err = NULL;
810
811 visit_type_MigrationStatus(v, "status", &obj->status, &err);
812 if (err) {
813 goto out;
814 }
815
816out:
817 error_propagate(errp, err);
818}
819
820void visit_type_q_obj_MIGRATION_PASS_arg_members(Visitor *v, q_obj_MIGRATION_PASS_arg *obj, Error **errp)
821{
822 Error *err = NULL;
823
824 visit_type_int(v, "pass", &obj->pass, &err);
825 if (err) {
826 goto out;
827 }
828
829out:
830 error_propagate(errp, err);
831}
832
833void visit_type_COLOMessage(Visitor *v, const char *name, COLOMessage *obj, Error **errp)
834{
835 int value = *obj;
836 visit_type_enum(v, name, &value, &COLOMessage_lookup, errp);
837 *obj = value;
838}
839
840void visit_type_COLOMode(Visitor *v, const char *name, COLOMode *obj, Error **errp)
841{
842 int value = *obj;
843 visit_type_enum(v, name, &value, &COLOMode_lookup, errp);
844 *obj = value;
845}
846
847void visit_type_FailoverStatus(Visitor *v, const char *name, FailoverStatus *obj, Error **errp)
848{
849 int value = *obj;
850 visit_type_enum(v, name, &value, &FailoverStatus_lookup, errp);
851 *obj = value;
852}
853
854void visit_type_q_obj_COLO_EXIT_arg_members(Visitor *v, q_obj_COLO_EXIT_arg *obj, Error **errp)
855{
856 Error *err = NULL;
857
858 visit_type_COLOMode(v, "mode", &obj->mode, &err);
859 if (err) {
860 goto out;
861 }
862 visit_type_COLOExitReason(v, "reason", &obj->reason, &err);
863 if (err) {
864 goto out;
865 }
866
867out:
868 error_propagate(errp, err);
869}
870
871void visit_type_COLOExitReason(Visitor *v, const char *name, COLOExitReason *obj, Error **errp)
872{
873 int value = *obj;
874 visit_type_enum(v, name, &value, &COLOExitReason_lookup, errp);
875 *obj = value;
876}
877
878void visit_type_q_obj_migrate_continue_arg_members(Visitor *v, q_obj_migrate_continue_arg *obj, Error **errp)
879{
880 Error *err = NULL;
881
882 visit_type_MigrationStatus(v, "state", &obj->state, &err);
883 if (err) {
884 goto out;
885 }
886
887out:
888 error_propagate(errp, err);
889}
890
891void visit_type_q_obj_migrate_set_downtime_arg_members(Visitor *v, q_obj_migrate_set_downtime_arg *obj, Error **errp)
892{
893 Error *err = NULL;
894
895 visit_type_number(v, "value", &obj->value, &err);
896 if (err) {
897 goto out;
898 }
899
900out:
901 error_propagate(errp, err);
902}
903
904void visit_type_q_obj_migrate_set_speed_arg_members(Visitor *v, q_obj_migrate_set_speed_arg *obj, Error **errp)
905{
906 Error *err = NULL;
907
908 visit_type_int(v, "value", &obj->value, &err);
909 if (err) {
910 goto out;
911 }
912
913out:
914 error_propagate(errp, err);
915}
916
917void visit_type_q_obj_migrate_set_cache_size_arg_members(Visitor *v, q_obj_migrate_set_cache_size_arg *obj, Error **errp)
918{
919 Error *err = NULL;
920
921 visit_type_int(v, "value", &obj->value, &err);
922 if (err) {
923 goto out;
924 }
925
926out:
927 error_propagate(errp, err);
928}
929
930void visit_type_q_obj_migrate_arg_members(Visitor *v, q_obj_migrate_arg *obj, Error **errp)
931{
932 Error *err = NULL;
933
934 visit_type_str(v, "uri", &obj->uri, &err);
935 if (err) {
936 goto out;
937 }
938 if (visit_optional(v, "blk", &obj->has_blk)) {
939 visit_type_bool(v, "blk", &obj->blk, &err);
940 if (err) {
941 goto out;
942 }
943 }
944 if (visit_optional(v, "inc", &obj->has_inc)) {
945 visit_type_bool(v, "inc", &obj->inc, &err);
946 if (err) {
947 goto out;
948 }
949 }
950 if (visit_optional(v, "detach", &obj->has_detach)) {
951 visit_type_bool(v, "detach", &obj->detach, &err);
952 if (err) {
953 goto out;
954 }
955 }
956 if (visit_optional(v, "resume", &obj->has_resume)) {
957 visit_type_bool(v, "resume", &obj->resume, &err);
958 if (err) {
959 goto out;
960 }
961 }
962
963out:
964 error_propagate(errp, err);
965}
966
967void visit_type_q_obj_migrate_incoming_arg_members(Visitor *v, q_obj_migrate_incoming_arg *obj, Error **errp)
968{
969 Error *err = NULL;
970
971 visit_type_str(v, "uri", &obj->uri, &err);
972 if (err) {
973 goto out;
974 }
975
976out:
977 error_propagate(errp, err);
978}
979
980void visit_type_q_obj_xen_save_devices_state_arg_members(Visitor *v, q_obj_xen_save_devices_state_arg *obj, Error **errp)
981{
982 Error *err = NULL;
983
984 visit_type_str(v, "filename", &obj->filename, &err);
985 if (err) {
986 goto out;
987 }
988 if (visit_optional(v, "live", &obj->has_live)) {
989 visit_type_bool(v, "live", &obj->live, &err);
990 if (err) {
991 goto out;
992 }
993 }
994
995out:
996 error_propagate(errp, err);
997}
998
999#if defined(CONFIG_REPLICATION)
1000void visit_type_q_obj_xen_set_replication_arg_members(Visitor *v, q_obj_xen_set_replication_arg *obj, Error **errp)
1001{
1002 Error *err = NULL;
1003
1004 visit_type_bool(v, "enable", &obj->enable, &err);
1005 if (err) {
1006 goto out;
1007 }
1008 visit_type_bool(v, "primary", &obj->primary, &err);
1009 if (err) {
1010 goto out;
1011 }
1012 if (visit_optional(v, "failover", &obj->has_failover)) {
1013 visit_type_bool(v, "failover", &obj->failover, &err);
1014 if (err) {
1015 goto out;
1016 }
1017 }
1018
1019out:
1020 error_propagate(errp, err);
1021}
1022#endif /* defined(CONFIG_REPLICATION) */
1023
1024#if defined(CONFIG_REPLICATION)
1025void visit_type_ReplicationStatus_members(Visitor *v, ReplicationStatus *obj, Error **errp)
1026{
1027 Error *err = NULL;
1028
1029 visit_type_bool(v, "error", &obj->error, &err);
1030 if (err) {
1031 goto out;
1032 }
1033 if (visit_optional(v, "desc", &obj->has_desc)) {
1034 visit_type_str(v, "desc", &obj->desc, &err);
1035 if (err) {
1036 goto out;
1037 }
1038 }
1039
1040out:
1041 error_propagate(errp, err);
1042}
1043
1044void visit_type_ReplicationStatus(Visitor *v, const char *name, ReplicationStatus **obj, Error **errp)
1045{
1046 Error *err = NULL;
1047
1048 visit_start_struct(v, name, (void **)obj, sizeof(ReplicationStatus), &err);
1049 if (err) {
1050 goto out;
1051 }
1052 if (!*obj) {
1053 goto out_obj;
1054 }
1055 visit_type_ReplicationStatus_members(v, *obj, &err);
1056 if (err) {
1057 goto out_obj;
1058 }
1059 visit_check_struct(v, &err);
1060out_obj:
1061 visit_end_struct(v, (void **)obj);
1062 if (err && visit_is_input(v)) {
1063 qapi_free_ReplicationStatus(*obj);
1064 *obj = NULL;
1065 }
1066out:
1067 error_propagate(errp, err);
1068}
1069#endif /* defined(CONFIG_REPLICATION) */
1070
1071void visit_type_COLOStatus_members(Visitor *v, COLOStatus *obj, Error **errp)
1072{
1073 Error *err = NULL;
1074
1075 visit_type_COLOMode(v, "mode", &obj->mode, &err);
1076 if (err) {
1077 goto out;
1078 }
1079 visit_type_COLOMode(v, "last-mode", &obj->last_mode, &err);
1080 if (err) {
1081 goto out;
1082 }
1083 visit_type_COLOExitReason(v, "reason", &obj->reason, &err);
1084 if (err) {
1085 goto out;
1086 }
1087
1088out:
1089 error_propagate(errp, err);
1090}
1091
1092void visit_type_COLOStatus(Visitor *v, const char *name, COLOStatus **obj, Error **errp)
1093{
1094 Error *err = NULL;
1095
1096 visit_start_struct(v, name, (void **)obj, sizeof(COLOStatus), &err);
1097 if (err) {
1098 goto out;
1099 }
1100 if (!*obj) {
1101 goto out_obj;
1102 }
1103 visit_type_COLOStatus_members(v, *obj, &err);
1104 if (err) {
1105 goto out_obj;
1106 }
1107 visit_check_struct(v, &err);
1108out_obj:
1109 visit_end_struct(v, (void **)obj);
1110 if (err && visit_is_input(v)) {
1111 qapi_free_COLOStatus(*obj);
1112 *obj = NULL;
1113 }
1114out:
1115 error_propagate(errp, err);
1116}
1117
1118void visit_type_q_obj_migrate_recover_arg_members(Visitor *v, q_obj_migrate_recover_arg *obj, Error **errp)
1119{
1120 Error *err = NULL;
1121
1122 visit_type_str(v, "uri", &obj->uri, &err);
1123 if (err) {
1124 goto out;
1125 }
1126
1127out:
1128 error_propagate(errp, err);
1129}
1130
1131/* Dummy declaration to prevent empty .o file */
1132char qapi_dummy_qapi_visit_migration_c;
1133