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 | |
18 | void 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 | |
79 | out: |
80 | error_propagate(errp, err); |
81 | } |
82 | |
83 | void 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); |
99 | out_obj: |
100 | visit_end_struct(v, (void **)obj); |
101 | if (err && visit_is_input(v)) { |
102 | qapi_free_MigrationStats(*obj); |
103 | *obj = NULL; |
104 | } |
105 | out: |
106 | error_propagate(errp, err); |
107 | } |
108 | |
109 | void 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 | |
138 | out: |
139 | error_propagate(errp, err); |
140 | } |
141 | |
142 | void 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); |
158 | out_obj: |
159 | visit_end_struct(v, (void **)obj); |
160 | if (err && visit_is_input(v)) { |
161 | qapi_free_XBZRLECacheStats(*obj); |
162 | *obj = NULL; |
163 | } |
164 | out: |
165 | error_propagate(errp, err); |
166 | } |
167 | |
168 | void 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 | |
193 | out: |
194 | error_propagate(errp, err); |
195 | } |
196 | |
197 | void 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); |
213 | out_obj: |
214 | visit_end_struct(v, (void **)obj); |
215 | if (err && visit_is_input(v)) { |
216 | qapi_free_CompressionStats(*obj); |
217 | *obj = NULL; |
218 | } |
219 | out: |
220 | error_propagate(errp, err); |
221 | } |
222 | |
223 | void 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 | |
230 | void 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 | |
319 | out: |
320 | error_propagate(errp, err); |
321 | } |
322 | |
323 | void 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); |
339 | out_obj: |
340 | visit_end_struct(v, (void **)obj); |
341 | if (err && visit_is_input(v)) { |
342 | qapi_free_MigrationInfo(*obj); |
343 | *obj = NULL; |
344 | } |
345 | out: |
346 | error_propagate(errp, err); |
347 | } |
348 | |
349 | void 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 | |
356 | void 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 | |
369 | out: |
370 | error_propagate(errp, err); |
371 | } |
372 | |
373 | void 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); |
389 | out_obj: |
390 | visit_end_struct(v, (void **)obj); |
391 | if (err && visit_is_input(v)) { |
392 | qapi_free_MigrationCapabilityStatus(*obj); |
393 | *obj = NULL; |
394 | } |
395 | out: |
396 | error_propagate(errp, err); |
397 | } |
398 | |
399 | void 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 | } |
426 | out: |
427 | error_propagate(errp, err); |
428 | } |
429 | |
430 | void 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 | |
439 | out: |
440 | error_propagate(errp, err); |
441 | } |
442 | |
443 | void 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 | |
450 | void 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 | |
581 | out: |
582 | error_propagate(errp, err); |
583 | } |
584 | |
585 | void 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); |
601 | out_obj: |
602 | visit_end_struct(v, (void **)obj); |
603 | if (err && visit_is_input(v)) { |
604 | qapi_free_MigrateSetParameters(*obj); |
605 | *obj = NULL; |
606 | } |
607 | out: |
608 | error_propagate(errp, err); |
609 | } |
610 | |
611 | void 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 | |
742 | out: |
743 | error_propagate(errp, err); |
744 | } |
745 | |
746 | void 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); |
762 | out_obj: |
763 | visit_end_struct(v, (void **)obj); |
764 | if (err && visit_is_input(v)) { |
765 | qapi_free_MigrationParameters(*obj); |
766 | *obj = NULL; |
767 | } |
768 | out: |
769 | error_propagate(errp, err); |
770 | } |
771 | |
772 | void 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 | |
803 | out: |
804 | error_propagate(errp, err); |
805 | } |
806 | |
807 | void 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 | |
816 | out: |
817 | error_propagate(errp, err); |
818 | } |
819 | |
820 | void 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 | |
829 | out: |
830 | error_propagate(errp, err); |
831 | } |
832 | |
833 | void 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 | |
840 | void 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 | |
847 | void 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 | |
854 | void 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 | |
867 | out: |
868 | error_propagate(errp, err); |
869 | } |
870 | |
871 | void 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 | |
878 | void 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 | |
887 | out: |
888 | error_propagate(errp, err); |
889 | } |
890 | |
891 | void 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 | |
900 | out: |
901 | error_propagate(errp, err); |
902 | } |
903 | |
904 | void 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 | |
913 | out: |
914 | error_propagate(errp, err); |
915 | } |
916 | |
917 | void 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 | |
926 | out: |
927 | error_propagate(errp, err); |
928 | } |
929 | |
930 | void 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 | |
963 | out: |
964 | error_propagate(errp, err); |
965 | } |
966 | |
967 | void 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 | |
976 | out: |
977 | error_propagate(errp, err); |
978 | } |
979 | |
980 | void 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 | |
995 | out: |
996 | error_propagate(errp, err); |
997 | } |
998 | |
999 | #if defined(CONFIG_REPLICATION) |
1000 | void 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 | |
1019 | out: |
1020 | error_propagate(errp, err); |
1021 | } |
1022 | #endif /* defined(CONFIG_REPLICATION) */ |
1023 | |
1024 | #if defined(CONFIG_REPLICATION) |
1025 | void 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 | |
1040 | out: |
1041 | error_propagate(errp, err); |
1042 | } |
1043 | |
1044 | void 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); |
1060 | out_obj: |
1061 | visit_end_struct(v, (void **)obj); |
1062 | if (err && visit_is_input(v)) { |
1063 | qapi_free_ReplicationStatus(*obj); |
1064 | *obj = NULL; |
1065 | } |
1066 | out: |
1067 | error_propagate(errp, err); |
1068 | } |
1069 | #endif /* defined(CONFIG_REPLICATION) */ |
1070 | |
1071 | void 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 | |
1088 | out: |
1089 | error_propagate(errp, err); |
1090 | } |
1091 | |
1092 | void 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); |
1108 | out_obj: |
1109 | visit_end_struct(v, (void **)obj); |
1110 | if (err && visit_is_input(v)) { |
1111 | qapi_free_COLOStatus(*obj); |
1112 | *obj = NULL; |
1113 | } |
1114 | out: |
1115 | error_propagate(errp, err); |
1116 | } |
1117 | |
1118 | void 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 | |
1127 | out: |
1128 | error_propagate(errp, err); |
1129 | } |
1130 | |
1131 | /* Dummy declaration to prevent empty .o file */ |
1132 | char qapi_dummy_qapi_visit_migration_c; |
1133 | |