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 | |
24 | static 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 | |
41 | void 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 | |
70 | out: |
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 | |
82 | void 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 | |
104 | out: |
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 | |
114 | static 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 | |
131 | void 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 | |
160 | out: |
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 | |
172 | void 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 | |
194 | out: |
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 | |
204 | static 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 | |
221 | void 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 | |
250 | out: |
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 | |
262 | void 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 | |
284 | out: |
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 | |
294 | void 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 | |
317 | out: |
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 | |
329 | void 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 | |
352 | out: |
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 | |
364 | void 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 | |
387 | out: |
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 | |
399 | void 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 | |
421 | out: |
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 | |
431 | void 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 | |
453 | out: |
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 | |
463 | void 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 | |
485 | out: |
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 | |
495 | void 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 | |
517 | out: |
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 | |
527 | static 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 | |
544 | void 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 | |
573 | out: |
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 | |
585 | void 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 | |
607 | out: |
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 | |
617 | void 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 | |
639 | out: |
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 | |
649 | void 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 | |
671 | out: |
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) |
682 | void 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 | |
704 | out: |
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) |
716 | static 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) |
735 | void 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 | |
764 | out: |
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) |
778 | void 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 | |
801 | out: |
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 | |
814 | static 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 | |
831 | void 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 | |
860 | out: |
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 | |
872 | void 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 | |
894 | out: |
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 | |
904 | void 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 | |
927 | out: |
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 */ |
940 | char qapi_dummy_qapi_commands_migration_c; |
941 | |