1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * Schema-defined QAPI/QMP commands
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/visitor.h"
15#include "qapi/qmp/qdict.h"
16#include "qapi/qobject-output-visitor.h"
17#include "qapi/qobject-input-visitor.h"
18#include "qapi/dealloc-visitor.h"
19#include "qapi/error.h"
20#include "qapi-visit-migration.h"
21#include "qapi-commands-migration.h"
22
23
24static void qmp_marshal_output_MigrationInfo(MigrationInfo *ret_in, QObject **ret_out, Error **errp)
25{
26 Error *err = NULL;
27 Visitor *v;
28
29 v = qobject_output_visitor_new(ret_out);
30 visit_type_MigrationInfo(v, "unused", &ret_in, &err);
31 if (!err) {
32 visit_complete(v, ret_out);
33 }
34 error_propagate(errp, err);
35 visit_free(v);
36 v = qapi_dealloc_visitor_new();
37 visit_type_MigrationInfo(v, "unused", &ret_in, NULL);
38 visit_free(v);
39}
40
41void qmp_marshal_query_migrate(QDict *args, QObject **ret, Error **errp)
42{
43 Error *err = NULL;
44 MigrationInfo *retval;
45 Visitor *v = NULL;
46
47 if (args) {
48 v = qobject_input_visitor_new(QOBJECT(args));
49 visit_start_struct(v, NULL, NULL, 0, &err);
50 if (err) {
51 goto out;
52 }
53
54 if (!err) {
55 visit_check_struct(v, &err);
56 }
57 visit_end_struct(v, NULL);
58 if (err) {
59 goto out;
60 }
61 }
62
63 retval = qmp_query_migrate(&err);
64 if (err) {
65 goto out;
66 }
67
68 qmp_marshal_output_MigrationInfo(retval, ret, &err);
69
70out:
71 error_propagate(errp, err);
72 visit_free(v);
73 if (args) {
74 v = qapi_dealloc_visitor_new();
75 visit_start_struct(v, NULL, NULL, 0, NULL);
76
77 visit_end_struct(v, NULL);
78 visit_free(v);
79 }
80}
81
82void qmp_marshal_migrate_set_capabilities(QDict *args, QObject **ret, Error **errp)
83{
84 Error *err = NULL;
85 Visitor *v;
86 q_obj_migrate_set_capabilities_arg arg = {0};
87
88 v = qobject_input_visitor_new(QOBJECT(args));
89 visit_start_struct(v, NULL, NULL, 0, &err);
90 if (err) {
91 goto out;
92 }
93 visit_type_q_obj_migrate_set_capabilities_arg_members(v, &arg, &err);
94 if (!err) {
95 visit_check_struct(v, &err);
96 }
97 visit_end_struct(v, NULL);
98 if (err) {
99 goto out;
100 }
101
102 qmp_migrate_set_capabilities(arg.capabilities, &err);
103
104out:
105 error_propagate(errp, err);
106 visit_free(v);
107 v = qapi_dealloc_visitor_new();
108 visit_start_struct(v, NULL, NULL, 0, NULL);
109 visit_type_q_obj_migrate_set_capabilities_arg_members(v, &arg, NULL);
110 visit_end_struct(v, NULL);
111 visit_free(v);
112}
113
114static void qmp_marshal_output_MigrationCapabilityStatusList(MigrationCapabilityStatusList *ret_in, QObject **ret_out, Error **errp)
115{
116 Error *err = NULL;
117 Visitor *v;
118
119 v = qobject_output_visitor_new(ret_out);
120 visit_type_MigrationCapabilityStatusList(v, "unused", &ret_in, &err);
121 if (!err) {
122 visit_complete(v, ret_out);
123 }
124 error_propagate(errp, err);
125 visit_free(v);
126 v = qapi_dealloc_visitor_new();
127 visit_type_MigrationCapabilityStatusList(v, "unused", &ret_in, NULL);
128 visit_free(v);
129}
130
131void qmp_marshal_query_migrate_capabilities(QDict *args, QObject **ret, Error **errp)
132{
133 Error *err = NULL;
134 MigrationCapabilityStatusList *retval;
135 Visitor *v = NULL;
136
137 if (args) {
138 v = qobject_input_visitor_new(QOBJECT(args));
139 visit_start_struct(v, NULL, NULL, 0, &err);
140 if (err) {
141 goto out;
142 }
143
144 if (!err) {
145 visit_check_struct(v, &err);
146 }
147 visit_end_struct(v, NULL);
148 if (err) {
149 goto out;
150 }
151 }
152
153 retval = qmp_query_migrate_capabilities(&err);
154 if (err) {
155 goto out;
156 }
157
158 qmp_marshal_output_MigrationCapabilityStatusList(retval, ret, &err);
159
160out:
161 error_propagate(errp, err);
162 visit_free(v);
163 if (args) {
164 v = qapi_dealloc_visitor_new();
165 visit_start_struct(v, NULL, NULL, 0, NULL);
166
167 visit_end_struct(v, NULL);
168 visit_free(v);
169 }
170}
171
172void qmp_marshal_migrate_set_parameters(QDict *args, QObject **ret, Error **errp)
173{
174 Error *err = NULL;
175 Visitor *v;
176 MigrateSetParameters arg = {0};
177
178 v = qobject_input_visitor_new(QOBJECT(args));
179 visit_start_struct(v, NULL, NULL, 0, &err);
180 if (err) {
181 goto out;
182 }
183 visit_type_MigrateSetParameters_members(v, &arg, &err);
184 if (!err) {
185 visit_check_struct(v, &err);
186 }
187 visit_end_struct(v, NULL);
188 if (err) {
189 goto out;
190 }
191
192 qmp_migrate_set_parameters(&arg, &err);
193
194out:
195 error_propagate(errp, err);
196 visit_free(v);
197 v = qapi_dealloc_visitor_new();
198 visit_start_struct(v, NULL, NULL, 0, NULL);
199 visit_type_MigrateSetParameters_members(v, &arg, NULL);
200 visit_end_struct(v, NULL);
201 visit_free(v);
202}
203
204static void qmp_marshal_output_MigrationParameters(MigrationParameters *ret_in, QObject **ret_out, Error **errp)
205{
206 Error *err = NULL;
207 Visitor *v;
208
209 v = qobject_output_visitor_new(ret_out);
210 visit_type_MigrationParameters(v, "unused", &ret_in, &err);
211 if (!err) {
212 visit_complete(v, ret_out);
213 }
214 error_propagate(errp, err);
215 visit_free(v);
216 v = qapi_dealloc_visitor_new();
217 visit_type_MigrationParameters(v, "unused", &ret_in, NULL);
218 visit_free(v);
219}
220
221void qmp_marshal_query_migrate_parameters(QDict *args, QObject **ret, Error **errp)
222{
223 Error *err = NULL;
224 MigrationParameters *retval;
225 Visitor *v = NULL;
226
227 if (args) {
228 v = qobject_input_visitor_new(QOBJECT(args));
229 visit_start_struct(v, NULL, NULL, 0, &err);
230 if (err) {
231 goto out;
232 }
233
234 if (!err) {
235 visit_check_struct(v, &err);
236 }
237 visit_end_struct(v, NULL);
238 if (err) {
239 goto out;
240 }
241 }
242
243 retval = qmp_query_migrate_parameters(&err);
244 if (err) {
245 goto out;
246 }
247
248 qmp_marshal_output_MigrationParameters(retval, ret, &err);
249
250out:
251 error_propagate(errp, err);
252 visit_free(v);
253 if (args) {
254 v = qapi_dealloc_visitor_new();
255 visit_start_struct(v, NULL, NULL, 0, NULL);
256
257 visit_end_struct(v, NULL);
258 visit_free(v);
259 }
260}
261
262void qmp_marshal_client_migrate_info(QDict *args, QObject **ret, Error **errp)
263{
264 Error *err = NULL;
265 Visitor *v;
266 q_obj_client_migrate_info_arg arg = {0};
267
268 v = qobject_input_visitor_new(QOBJECT(args));
269 visit_start_struct(v, NULL, NULL, 0, &err);
270 if (err) {
271 goto out;
272 }
273 visit_type_q_obj_client_migrate_info_arg_members(v, &arg, &err);
274 if (!err) {
275 visit_check_struct(v, &err);
276 }
277 visit_end_struct(v, NULL);
278 if (err) {
279 goto out;
280 }
281
282 qmp_client_migrate_info(arg.protocol, arg.hostname, arg.has_port, arg.port, arg.has_tls_port, arg.tls_port, arg.has_cert_subject, arg.cert_subject, &err);
283
284out:
285 error_propagate(errp, err);
286 visit_free(v);
287 v = qapi_dealloc_visitor_new();
288 visit_start_struct(v, NULL, NULL, 0, NULL);
289 visit_type_q_obj_client_migrate_info_arg_members(v, &arg, NULL);
290 visit_end_struct(v, NULL);
291 visit_free(v);
292}
293
294void qmp_marshal_migrate_start_postcopy(QDict *args, QObject **ret, Error **errp)
295{
296 Error *err = NULL;
297 Visitor *v = NULL;
298
299 if (args) {
300 v = qobject_input_visitor_new(QOBJECT(args));
301 visit_start_struct(v, NULL, NULL, 0, &err);
302 if (err) {
303 goto out;
304 }
305
306 if (!err) {
307 visit_check_struct(v, &err);
308 }
309 visit_end_struct(v, NULL);
310 if (err) {
311 goto out;
312 }
313 }
314
315 qmp_migrate_start_postcopy(&err);
316
317out:
318 error_propagate(errp, err);
319 visit_free(v);
320 if (args) {
321 v = qapi_dealloc_visitor_new();
322 visit_start_struct(v, NULL, NULL, 0, NULL);
323
324 visit_end_struct(v, NULL);
325 visit_free(v);
326 }
327}
328
329void qmp_marshal_x_colo_lost_heartbeat(QDict *args, QObject **ret, Error **errp)
330{
331 Error *err = NULL;
332 Visitor *v = NULL;
333
334 if (args) {
335 v = qobject_input_visitor_new(QOBJECT(args));
336 visit_start_struct(v, NULL, NULL, 0, &err);
337 if (err) {
338 goto out;
339 }
340
341 if (!err) {
342 visit_check_struct(v, &err);
343 }
344 visit_end_struct(v, NULL);
345 if (err) {
346 goto out;
347 }
348 }
349
350 qmp_x_colo_lost_heartbeat(&err);
351
352out:
353 error_propagate(errp, err);
354 visit_free(v);
355 if (args) {
356 v = qapi_dealloc_visitor_new();
357 visit_start_struct(v, NULL, NULL, 0, NULL);
358
359 visit_end_struct(v, NULL);
360 visit_free(v);
361 }
362}
363
364void qmp_marshal_migrate_cancel(QDict *args, QObject **ret, Error **errp)
365{
366 Error *err = NULL;
367 Visitor *v = NULL;
368
369 if (args) {
370 v = qobject_input_visitor_new(QOBJECT(args));
371 visit_start_struct(v, NULL, NULL, 0, &err);
372 if (err) {
373 goto out;
374 }
375
376 if (!err) {
377 visit_check_struct(v, &err);
378 }
379 visit_end_struct(v, NULL);
380 if (err) {
381 goto out;
382 }
383 }
384
385 qmp_migrate_cancel(&err);
386
387out:
388 error_propagate(errp, err);
389 visit_free(v);
390 if (args) {
391 v = qapi_dealloc_visitor_new();
392 visit_start_struct(v, NULL, NULL, 0, NULL);
393
394 visit_end_struct(v, NULL);
395 visit_free(v);
396 }
397}
398
399void qmp_marshal_migrate_continue(QDict *args, QObject **ret, Error **errp)
400{
401 Error *err = NULL;
402 Visitor *v;
403 q_obj_migrate_continue_arg arg = {0};
404
405 v = qobject_input_visitor_new(QOBJECT(args));
406 visit_start_struct(v, NULL, NULL, 0, &err);
407 if (err) {
408 goto out;
409 }
410 visit_type_q_obj_migrate_continue_arg_members(v, &arg, &err);
411 if (!err) {
412 visit_check_struct(v, &err);
413 }
414 visit_end_struct(v, NULL);
415 if (err) {
416 goto out;
417 }
418
419 qmp_migrate_continue(arg.state, &err);
420
421out:
422 error_propagate(errp, err);
423 visit_free(v);
424 v = qapi_dealloc_visitor_new();
425 visit_start_struct(v, NULL, NULL, 0, NULL);
426 visit_type_q_obj_migrate_continue_arg_members(v, &arg, NULL);
427 visit_end_struct(v, NULL);
428 visit_free(v);
429}
430
431void qmp_marshal_migrate_set_downtime(QDict *args, QObject **ret, Error **errp)
432{
433 Error *err = NULL;
434 Visitor *v;
435 q_obj_migrate_set_downtime_arg arg = {0};
436
437 v = qobject_input_visitor_new(QOBJECT(args));
438 visit_start_struct(v, NULL, NULL, 0, &err);
439 if (err) {
440 goto out;
441 }
442 visit_type_q_obj_migrate_set_downtime_arg_members(v, &arg, &err);
443 if (!err) {
444 visit_check_struct(v, &err);
445 }
446 visit_end_struct(v, NULL);
447 if (err) {
448 goto out;
449 }
450
451 qmp_migrate_set_downtime(arg.value, &err);
452
453out:
454 error_propagate(errp, err);
455 visit_free(v);
456 v = qapi_dealloc_visitor_new();
457 visit_start_struct(v, NULL, NULL, 0, NULL);
458 visit_type_q_obj_migrate_set_downtime_arg_members(v, &arg, NULL);
459 visit_end_struct(v, NULL);
460 visit_free(v);
461}
462
463void qmp_marshal_migrate_set_speed(QDict *args, QObject **ret, Error **errp)
464{
465 Error *err = NULL;
466 Visitor *v;
467 q_obj_migrate_set_speed_arg arg = {0};
468
469 v = qobject_input_visitor_new(QOBJECT(args));
470 visit_start_struct(v, NULL, NULL, 0, &err);
471 if (err) {
472 goto out;
473 }
474 visit_type_q_obj_migrate_set_speed_arg_members(v, &arg, &err);
475 if (!err) {
476 visit_check_struct(v, &err);
477 }
478 visit_end_struct(v, NULL);
479 if (err) {
480 goto out;
481 }
482
483 qmp_migrate_set_speed(arg.value, &err);
484
485out:
486 error_propagate(errp, err);
487 visit_free(v);
488 v = qapi_dealloc_visitor_new();
489 visit_start_struct(v, NULL, NULL, 0, NULL);
490 visit_type_q_obj_migrate_set_speed_arg_members(v, &arg, NULL);
491 visit_end_struct(v, NULL);
492 visit_free(v);
493}
494
495void qmp_marshal_migrate_set_cache_size(QDict *args, QObject **ret, Error **errp)
496{
497 Error *err = NULL;
498 Visitor *v;
499 q_obj_migrate_set_cache_size_arg arg = {0};
500
501 v = qobject_input_visitor_new(QOBJECT(args));
502 visit_start_struct(v, NULL, NULL, 0, &err);
503 if (err) {
504 goto out;
505 }
506 visit_type_q_obj_migrate_set_cache_size_arg_members(v, &arg, &err);
507 if (!err) {
508 visit_check_struct(v, &err);
509 }
510 visit_end_struct(v, NULL);
511 if (err) {
512 goto out;
513 }
514
515 qmp_migrate_set_cache_size(arg.value, &err);
516
517out:
518 error_propagate(errp, err);
519 visit_free(v);
520 v = qapi_dealloc_visitor_new();
521 visit_start_struct(v, NULL, NULL, 0, NULL);
522 visit_type_q_obj_migrate_set_cache_size_arg_members(v, &arg, NULL);
523 visit_end_struct(v, NULL);
524 visit_free(v);
525}
526
527static void qmp_marshal_output_int(int64_t ret_in, QObject **ret_out, Error **errp)
528{
529 Error *err = NULL;
530 Visitor *v;
531
532 v = qobject_output_visitor_new(ret_out);
533 visit_type_int(v, "unused", &ret_in, &err);
534 if (!err) {
535 visit_complete(v, ret_out);
536 }
537 error_propagate(errp, err);
538 visit_free(v);
539 v = qapi_dealloc_visitor_new();
540 visit_type_int(v, "unused", &ret_in, NULL);
541 visit_free(v);
542}
543
544void qmp_marshal_query_migrate_cache_size(QDict *args, QObject **ret, Error **errp)
545{
546 Error *err = NULL;
547 int64_t retval;
548 Visitor *v = NULL;
549
550 if (args) {
551 v = qobject_input_visitor_new(QOBJECT(args));
552 visit_start_struct(v, NULL, NULL, 0, &err);
553 if (err) {
554 goto out;
555 }
556
557 if (!err) {
558 visit_check_struct(v, &err);
559 }
560 visit_end_struct(v, NULL);
561 if (err) {
562 goto out;
563 }
564 }
565
566 retval = qmp_query_migrate_cache_size(&err);
567 if (err) {
568 goto out;
569 }
570
571 qmp_marshal_output_int(retval, ret, &err);
572
573out:
574 error_propagate(errp, err);
575 visit_free(v);
576 if (args) {
577 v = qapi_dealloc_visitor_new();
578 visit_start_struct(v, NULL, NULL, 0, NULL);
579
580 visit_end_struct(v, NULL);
581 visit_free(v);
582 }
583}
584
585void qmp_marshal_migrate(QDict *args, QObject **ret, Error **errp)
586{
587 Error *err = NULL;
588 Visitor *v;
589 q_obj_migrate_arg arg = {0};
590
591 v = qobject_input_visitor_new(QOBJECT(args));
592 visit_start_struct(v, NULL, NULL, 0, &err);
593 if (err) {
594 goto out;
595 }
596 visit_type_q_obj_migrate_arg_members(v, &arg, &err);
597 if (!err) {
598 visit_check_struct(v, &err);
599 }
600 visit_end_struct(v, NULL);
601 if (err) {
602 goto out;
603 }
604
605 qmp_migrate(arg.uri, arg.has_blk, arg.blk, arg.has_inc, arg.inc, arg.has_detach, arg.detach, arg.has_resume, arg.resume, &err);
606
607out:
608 error_propagate(errp, err);
609 visit_free(v);
610 v = qapi_dealloc_visitor_new();
611 visit_start_struct(v, NULL, NULL, 0, NULL);
612 visit_type_q_obj_migrate_arg_members(v, &arg, NULL);
613 visit_end_struct(v, NULL);
614 visit_free(v);
615}
616
617void qmp_marshal_migrate_incoming(QDict *args, QObject **ret, Error **errp)
618{
619 Error *err = NULL;
620 Visitor *v;
621 q_obj_migrate_incoming_arg arg = {0};
622
623 v = qobject_input_visitor_new(QOBJECT(args));
624 visit_start_struct(v, NULL, NULL, 0, &err);
625 if (err) {
626 goto out;
627 }
628 visit_type_q_obj_migrate_incoming_arg_members(v, &arg, &err);
629 if (!err) {
630 visit_check_struct(v, &err);
631 }
632 visit_end_struct(v, NULL);
633 if (err) {
634 goto out;
635 }
636
637 qmp_migrate_incoming(arg.uri, &err);
638
639out:
640 error_propagate(errp, err);
641 visit_free(v);
642 v = qapi_dealloc_visitor_new();
643 visit_start_struct(v, NULL, NULL, 0, NULL);
644 visit_type_q_obj_migrate_incoming_arg_members(v, &arg, NULL);
645 visit_end_struct(v, NULL);
646 visit_free(v);
647}
648
649void qmp_marshal_xen_save_devices_state(QDict *args, QObject **ret, Error **errp)
650{
651 Error *err = NULL;
652 Visitor *v;
653 q_obj_xen_save_devices_state_arg arg = {0};
654
655 v = qobject_input_visitor_new(QOBJECT(args));
656 visit_start_struct(v, NULL, NULL, 0, &err);
657 if (err) {
658 goto out;
659 }
660 visit_type_q_obj_xen_save_devices_state_arg_members(v, &arg, &err);
661 if (!err) {
662 visit_check_struct(v, &err);
663 }
664 visit_end_struct(v, NULL);
665 if (err) {
666 goto out;
667 }
668
669 qmp_xen_save_devices_state(arg.filename, arg.has_live, arg.live, &err);
670
671out:
672 error_propagate(errp, err);
673 visit_free(v);
674 v = qapi_dealloc_visitor_new();
675 visit_start_struct(v, NULL, NULL, 0, NULL);
676 visit_type_q_obj_xen_save_devices_state_arg_members(v, &arg, NULL);
677 visit_end_struct(v, NULL);
678 visit_free(v);
679}
680
681#if defined(CONFIG_REPLICATION)
682void qmp_marshal_xen_set_replication(QDict *args, QObject **ret, Error **errp)
683{
684 Error *err = NULL;
685 Visitor *v;
686 q_obj_xen_set_replication_arg arg = {0};
687
688 v = qobject_input_visitor_new(QOBJECT(args));
689 visit_start_struct(v, NULL, NULL, 0, &err);
690 if (err) {
691 goto out;
692 }
693 visit_type_q_obj_xen_set_replication_arg_members(v, &arg, &err);
694 if (!err) {
695 visit_check_struct(v, &err);
696 }
697 visit_end_struct(v, NULL);
698 if (err) {
699 goto out;
700 }
701
702 qmp_xen_set_replication(arg.enable, arg.primary, arg.has_failover, arg.failover, &err);
703
704out:
705 error_propagate(errp, err);
706 visit_free(v);
707 v = qapi_dealloc_visitor_new();
708 visit_start_struct(v, NULL, NULL, 0, NULL);
709 visit_type_q_obj_xen_set_replication_arg_members(v, &arg, NULL);
710 visit_end_struct(v, NULL);
711 visit_free(v);
712}
713#endif /* defined(CONFIG_REPLICATION) */
714
715#if defined(CONFIG_REPLICATION)
716static void qmp_marshal_output_ReplicationStatus(ReplicationStatus *ret_in, QObject **ret_out, Error **errp)
717{
718 Error *err = NULL;
719 Visitor *v;
720
721 v = qobject_output_visitor_new(ret_out);
722 visit_type_ReplicationStatus(v, "unused", &ret_in, &err);
723 if (!err) {
724 visit_complete(v, ret_out);
725 }
726 error_propagate(errp, err);
727 visit_free(v);
728 v = qapi_dealloc_visitor_new();
729 visit_type_ReplicationStatus(v, "unused", &ret_in, NULL);
730 visit_free(v);
731}
732#endif /* defined(CONFIG_REPLICATION) */
733
734#if defined(CONFIG_REPLICATION)
735void qmp_marshal_query_xen_replication_status(QDict *args, QObject **ret, Error **errp)
736{
737 Error *err = NULL;
738 ReplicationStatus *retval;
739 Visitor *v = NULL;
740
741 if (args) {
742 v = qobject_input_visitor_new(QOBJECT(args));
743 visit_start_struct(v, NULL, NULL, 0, &err);
744 if (err) {
745 goto out;
746 }
747
748 if (!err) {
749 visit_check_struct(v, &err);
750 }
751 visit_end_struct(v, NULL);
752 if (err) {
753 goto out;
754 }
755 }
756
757 retval = qmp_query_xen_replication_status(&err);
758 if (err) {
759 goto out;
760 }
761
762 qmp_marshal_output_ReplicationStatus(retval, ret, &err);
763
764out:
765 error_propagate(errp, err);
766 visit_free(v);
767 if (args) {
768 v = qapi_dealloc_visitor_new();
769 visit_start_struct(v, NULL, NULL, 0, NULL);
770
771 visit_end_struct(v, NULL);
772 visit_free(v);
773 }
774}
775#endif /* defined(CONFIG_REPLICATION) */
776
777#if defined(CONFIG_REPLICATION)
778void qmp_marshal_xen_colo_do_checkpoint(QDict *args, QObject **ret, Error **errp)
779{
780 Error *err = NULL;
781 Visitor *v = NULL;
782
783 if (args) {
784 v = qobject_input_visitor_new(QOBJECT(args));
785 visit_start_struct(v, NULL, NULL, 0, &err);
786 if (err) {
787 goto out;
788 }
789
790 if (!err) {
791 visit_check_struct(v, &err);
792 }
793 visit_end_struct(v, NULL);
794 if (err) {
795 goto out;
796 }
797 }
798
799 qmp_xen_colo_do_checkpoint(&err);
800
801out:
802 error_propagate(errp, err);
803 visit_free(v);
804 if (args) {
805 v = qapi_dealloc_visitor_new();
806 visit_start_struct(v, NULL, NULL, 0, NULL);
807
808 visit_end_struct(v, NULL);
809 visit_free(v);
810 }
811}
812#endif /* defined(CONFIG_REPLICATION) */
813
814static void qmp_marshal_output_COLOStatus(COLOStatus *ret_in, QObject **ret_out, Error **errp)
815{
816 Error *err = NULL;
817 Visitor *v;
818
819 v = qobject_output_visitor_new(ret_out);
820 visit_type_COLOStatus(v, "unused", &ret_in, &err);
821 if (!err) {
822 visit_complete(v, ret_out);
823 }
824 error_propagate(errp, err);
825 visit_free(v);
826 v = qapi_dealloc_visitor_new();
827 visit_type_COLOStatus(v, "unused", &ret_in, NULL);
828 visit_free(v);
829}
830
831void qmp_marshal_query_colo_status(QDict *args, QObject **ret, Error **errp)
832{
833 Error *err = NULL;
834 COLOStatus *retval;
835 Visitor *v = NULL;
836
837 if (args) {
838 v = qobject_input_visitor_new(QOBJECT(args));
839 visit_start_struct(v, NULL, NULL, 0, &err);
840 if (err) {
841 goto out;
842 }
843
844 if (!err) {
845 visit_check_struct(v, &err);
846 }
847 visit_end_struct(v, NULL);
848 if (err) {
849 goto out;
850 }
851 }
852
853 retval = qmp_query_colo_status(&err);
854 if (err) {
855 goto out;
856 }
857
858 qmp_marshal_output_COLOStatus(retval, ret, &err);
859
860out:
861 error_propagate(errp, err);
862 visit_free(v);
863 if (args) {
864 v = qapi_dealloc_visitor_new();
865 visit_start_struct(v, NULL, NULL, 0, NULL);
866
867 visit_end_struct(v, NULL);
868 visit_free(v);
869 }
870}
871
872void qmp_marshal_migrate_recover(QDict *args, QObject **ret, Error **errp)
873{
874 Error *err = NULL;
875 Visitor *v;
876 q_obj_migrate_recover_arg arg = {0};
877
878 v = qobject_input_visitor_new(QOBJECT(args));
879 visit_start_struct(v, NULL, NULL, 0, &err);
880 if (err) {
881 goto out;
882 }
883 visit_type_q_obj_migrate_recover_arg_members(v, &arg, &err);
884 if (!err) {
885 visit_check_struct(v, &err);
886 }
887 visit_end_struct(v, NULL);
888 if (err) {
889 goto out;
890 }
891
892 qmp_migrate_recover(arg.uri, &err);
893
894out:
895 error_propagate(errp, err);
896 visit_free(v);
897 v = qapi_dealloc_visitor_new();
898 visit_start_struct(v, NULL, NULL, 0, NULL);
899 visit_type_q_obj_migrate_recover_arg_members(v, &arg, NULL);
900 visit_end_struct(v, NULL);
901 visit_free(v);
902}
903
904void qmp_marshal_migrate_pause(QDict *args, QObject **ret, Error **errp)
905{
906 Error *err = NULL;
907 Visitor *v = NULL;
908
909 if (args) {
910 v = qobject_input_visitor_new(QOBJECT(args));
911 visit_start_struct(v, NULL, NULL, 0, &err);
912 if (err) {
913 goto out;
914 }
915
916 if (!err) {
917 visit_check_struct(v, &err);
918 }
919 visit_end_struct(v, NULL);
920 if (err) {
921 goto out;
922 }
923 }
924
925 qmp_migrate_pause(&err);
926
927out:
928 error_propagate(errp, err);
929 visit_free(v);
930 if (args) {
931 v = qapi_dealloc_visitor_new();
932 visit_start_struct(v, NULL, NULL, 0, NULL);
933
934 visit_end_struct(v, NULL);
935 visit_free(v);
936 }
937}
938
939/* Dummy declaration to prevent empty .o file */
940char qapi_dummy_qapi_commands_migration_c;
941