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-net.h"
17
18void visit_type_q_obj_set_link_arg_members(Visitor *v, q_obj_set_link_arg *obj, Error **errp)
19{
20 Error *err = NULL;
21
22 visit_type_str(v, "name", &obj->name, &err);
23 if (err) {
24 goto out;
25 }
26 visit_type_bool(v, "up", &obj->up, &err);
27 if (err) {
28 goto out;
29 }
30
31out:
32 error_propagate(errp, err);
33}
34
35void visit_type_q_obj_netdev_add_arg_members(Visitor *v, q_obj_netdev_add_arg *obj, Error **errp)
36{
37 Error *err = NULL;
38
39 visit_type_str(v, "type", &obj->type, &err);
40 if (err) {
41 goto out;
42 }
43 visit_type_str(v, "id", &obj->id, &err);
44 if (err) {
45 goto out;
46 }
47
48out:
49 error_propagate(errp, err);
50}
51
52void visit_type_q_obj_netdev_del_arg_members(Visitor *v, q_obj_netdev_del_arg *obj, Error **errp)
53{
54 Error *err = NULL;
55
56 visit_type_str(v, "id", &obj->id, &err);
57 if (err) {
58 goto out;
59 }
60
61out:
62 error_propagate(errp, err);
63}
64
65void visit_type_NetLegacyNicOptions_members(Visitor *v, NetLegacyNicOptions *obj, Error **errp)
66{
67 Error *err = NULL;
68
69 if (visit_optional(v, "netdev", &obj->has_netdev)) {
70 visit_type_str(v, "netdev", &obj->netdev, &err);
71 if (err) {
72 goto out;
73 }
74 }
75 if (visit_optional(v, "macaddr", &obj->has_macaddr)) {
76 visit_type_str(v, "macaddr", &obj->macaddr, &err);
77 if (err) {
78 goto out;
79 }
80 }
81 if (visit_optional(v, "model", &obj->has_model)) {
82 visit_type_str(v, "model", &obj->model, &err);
83 if (err) {
84 goto out;
85 }
86 }
87 if (visit_optional(v, "addr", &obj->has_addr)) {
88 visit_type_str(v, "addr", &obj->addr, &err);
89 if (err) {
90 goto out;
91 }
92 }
93 if (visit_optional(v, "vectors", &obj->has_vectors)) {
94 visit_type_uint32(v, "vectors", &obj->vectors, &err);
95 if (err) {
96 goto out;
97 }
98 }
99
100out:
101 error_propagate(errp, err);
102}
103
104void visit_type_NetLegacyNicOptions(Visitor *v, const char *name, NetLegacyNicOptions **obj, Error **errp)
105{
106 Error *err = NULL;
107
108 visit_start_struct(v, name, (void **)obj, sizeof(NetLegacyNicOptions), &err);
109 if (err) {
110 goto out;
111 }
112 if (!*obj) {
113 goto out_obj;
114 }
115 visit_type_NetLegacyNicOptions_members(v, *obj, &err);
116 if (err) {
117 goto out_obj;
118 }
119 visit_check_struct(v, &err);
120out_obj:
121 visit_end_struct(v, (void **)obj);
122 if (err && visit_is_input(v)) {
123 qapi_free_NetLegacyNicOptions(*obj);
124 *obj = NULL;
125 }
126out:
127 error_propagate(errp, err);
128}
129
130void visit_type_NetdevUserOptions_members(Visitor *v, NetdevUserOptions *obj, Error **errp)
131{
132 Error *err = NULL;
133
134 if (visit_optional(v, "hostname", &obj->has_hostname)) {
135 visit_type_str(v, "hostname", &obj->hostname, &err);
136 if (err) {
137 goto out;
138 }
139 }
140 if (visit_optional(v, "restrict", &obj->has_q_restrict)) {
141 visit_type_bool(v, "restrict", &obj->q_restrict, &err);
142 if (err) {
143 goto out;
144 }
145 }
146 if (visit_optional(v, "ipv4", &obj->has_ipv4)) {
147 visit_type_bool(v, "ipv4", &obj->ipv4, &err);
148 if (err) {
149 goto out;
150 }
151 }
152 if (visit_optional(v, "ipv6", &obj->has_ipv6)) {
153 visit_type_bool(v, "ipv6", &obj->ipv6, &err);
154 if (err) {
155 goto out;
156 }
157 }
158 if (visit_optional(v, "ip", &obj->has_ip)) {
159 visit_type_str(v, "ip", &obj->ip, &err);
160 if (err) {
161 goto out;
162 }
163 }
164 if (visit_optional(v, "net", &obj->has_net)) {
165 visit_type_str(v, "net", &obj->net, &err);
166 if (err) {
167 goto out;
168 }
169 }
170 if (visit_optional(v, "host", &obj->has_host)) {
171 visit_type_str(v, "host", &obj->host, &err);
172 if (err) {
173 goto out;
174 }
175 }
176 if (visit_optional(v, "tftp", &obj->has_tftp)) {
177 visit_type_str(v, "tftp", &obj->tftp, &err);
178 if (err) {
179 goto out;
180 }
181 }
182 if (visit_optional(v, "bootfile", &obj->has_bootfile)) {
183 visit_type_str(v, "bootfile", &obj->bootfile, &err);
184 if (err) {
185 goto out;
186 }
187 }
188 if (visit_optional(v, "dhcpstart", &obj->has_dhcpstart)) {
189 visit_type_str(v, "dhcpstart", &obj->dhcpstart, &err);
190 if (err) {
191 goto out;
192 }
193 }
194 if (visit_optional(v, "dns", &obj->has_dns)) {
195 visit_type_str(v, "dns", &obj->dns, &err);
196 if (err) {
197 goto out;
198 }
199 }
200 if (visit_optional(v, "dnssearch", &obj->has_dnssearch)) {
201 visit_type_StringList(v, "dnssearch", &obj->dnssearch, &err);
202 if (err) {
203 goto out;
204 }
205 }
206 if (visit_optional(v, "domainname", &obj->has_domainname)) {
207 visit_type_str(v, "domainname", &obj->domainname, &err);
208 if (err) {
209 goto out;
210 }
211 }
212 if (visit_optional(v, "ipv6-prefix", &obj->has_ipv6_prefix)) {
213 visit_type_str(v, "ipv6-prefix", &obj->ipv6_prefix, &err);
214 if (err) {
215 goto out;
216 }
217 }
218 if (visit_optional(v, "ipv6-prefixlen", &obj->has_ipv6_prefixlen)) {
219 visit_type_int(v, "ipv6-prefixlen", &obj->ipv6_prefixlen, &err);
220 if (err) {
221 goto out;
222 }
223 }
224 if (visit_optional(v, "ipv6-host", &obj->has_ipv6_host)) {
225 visit_type_str(v, "ipv6-host", &obj->ipv6_host, &err);
226 if (err) {
227 goto out;
228 }
229 }
230 if (visit_optional(v, "ipv6-dns", &obj->has_ipv6_dns)) {
231 visit_type_str(v, "ipv6-dns", &obj->ipv6_dns, &err);
232 if (err) {
233 goto out;
234 }
235 }
236 if (visit_optional(v, "smb", &obj->has_smb)) {
237 visit_type_str(v, "smb", &obj->smb, &err);
238 if (err) {
239 goto out;
240 }
241 }
242 if (visit_optional(v, "smbserver", &obj->has_smbserver)) {
243 visit_type_str(v, "smbserver", &obj->smbserver, &err);
244 if (err) {
245 goto out;
246 }
247 }
248 if (visit_optional(v, "hostfwd", &obj->has_hostfwd)) {
249 visit_type_StringList(v, "hostfwd", &obj->hostfwd, &err);
250 if (err) {
251 goto out;
252 }
253 }
254 if (visit_optional(v, "guestfwd", &obj->has_guestfwd)) {
255 visit_type_StringList(v, "guestfwd", &obj->guestfwd, &err);
256 if (err) {
257 goto out;
258 }
259 }
260 if (visit_optional(v, "tftp-server-name", &obj->has_tftp_server_name)) {
261 visit_type_str(v, "tftp-server-name", &obj->tftp_server_name, &err);
262 if (err) {
263 goto out;
264 }
265 }
266
267out:
268 error_propagate(errp, err);
269}
270
271void visit_type_NetdevUserOptions(Visitor *v, const char *name, NetdevUserOptions **obj, Error **errp)
272{
273 Error *err = NULL;
274
275 visit_start_struct(v, name, (void **)obj, sizeof(NetdevUserOptions), &err);
276 if (err) {
277 goto out;
278 }
279 if (!*obj) {
280 goto out_obj;
281 }
282 visit_type_NetdevUserOptions_members(v, *obj, &err);
283 if (err) {
284 goto out_obj;
285 }
286 visit_check_struct(v, &err);
287out_obj:
288 visit_end_struct(v, (void **)obj);
289 if (err && visit_is_input(v)) {
290 qapi_free_NetdevUserOptions(*obj);
291 *obj = NULL;
292 }
293out:
294 error_propagate(errp, err);
295}
296
297void visit_type_NetdevTapOptions_members(Visitor *v, NetdevTapOptions *obj, Error **errp)
298{
299 Error *err = NULL;
300
301 if (visit_optional(v, "ifname", &obj->has_ifname)) {
302 visit_type_str(v, "ifname", &obj->ifname, &err);
303 if (err) {
304 goto out;
305 }
306 }
307 if (visit_optional(v, "fd", &obj->has_fd)) {
308 visit_type_str(v, "fd", &obj->fd, &err);
309 if (err) {
310 goto out;
311 }
312 }
313 if (visit_optional(v, "fds", &obj->has_fds)) {
314 visit_type_str(v, "fds", &obj->fds, &err);
315 if (err) {
316 goto out;
317 }
318 }
319 if (visit_optional(v, "script", &obj->has_script)) {
320 visit_type_str(v, "script", &obj->script, &err);
321 if (err) {
322 goto out;
323 }
324 }
325 if (visit_optional(v, "downscript", &obj->has_downscript)) {
326 visit_type_str(v, "downscript", &obj->downscript, &err);
327 if (err) {
328 goto out;
329 }
330 }
331 if (visit_optional(v, "br", &obj->has_br)) {
332 visit_type_str(v, "br", &obj->br, &err);
333 if (err) {
334 goto out;
335 }
336 }
337 if (visit_optional(v, "helper", &obj->has_helper)) {
338 visit_type_str(v, "helper", &obj->helper, &err);
339 if (err) {
340 goto out;
341 }
342 }
343 if (visit_optional(v, "sndbuf", &obj->has_sndbuf)) {
344 visit_type_size(v, "sndbuf", &obj->sndbuf, &err);
345 if (err) {
346 goto out;
347 }
348 }
349 if (visit_optional(v, "vnet_hdr", &obj->has_vnet_hdr)) {
350 visit_type_bool(v, "vnet_hdr", &obj->vnet_hdr, &err);
351 if (err) {
352 goto out;
353 }
354 }
355 if (visit_optional(v, "vhost", &obj->has_vhost)) {
356 visit_type_bool(v, "vhost", &obj->vhost, &err);
357 if (err) {
358 goto out;
359 }
360 }
361 if (visit_optional(v, "vhostfd", &obj->has_vhostfd)) {
362 visit_type_str(v, "vhostfd", &obj->vhostfd, &err);
363 if (err) {
364 goto out;
365 }
366 }
367 if (visit_optional(v, "vhostfds", &obj->has_vhostfds)) {
368 visit_type_str(v, "vhostfds", &obj->vhostfds, &err);
369 if (err) {
370 goto out;
371 }
372 }
373 if (visit_optional(v, "vhostforce", &obj->has_vhostforce)) {
374 visit_type_bool(v, "vhostforce", &obj->vhostforce, &err);
375 if (err) {
376 goto out;
377 }
378 }
379 if (visit_optional(v, "queues", &obj->has_queues)) {
380 visit_type_uint32(v, "queues", &obj->queues, &err);
381 if (err) {
382 goto out;
383 }
384 }
385 if (visit_optional(v, "poll-us", &obj->has_poll_us)) {
386 visit_type_uint32(v, "poll-us", &obj->poll_us, &err);
387 if (err) {
388 goto out;
389 }
390 }
391
392out:
393 error_propagate(errp, err);
394}
395
396void visit_type_NetdevTapOptions(Visitor *v, const char *name, NetdevTapOptions **obj, Error **errp)
397{
398 Error *err = NULL;
399
400 visit_start_struct(v, name, (void **)obj, sizeof(NetdevTapOptions), &err);
401 if (err) {
402 goto out;
403 }
404 if (!*obj) {
405 goto out_obj;
406 }
407 visit_type_NetdevTapOptions_members(v, *obj, &err);
408 if (err) {
409 goto out_obj;
410 }
411 visit_check_struct(v, &err);
412out_obj:
413 visit_end_struct(v, (void **)obj);
414 if (err && visit_is_input(v)) {
415 qapi_free_NetdevTapOptions(*obj);
416 *obj = NULL;
417 }
418out:
419 error_propagate(errp, err);
420}
421
422void visit_type_NetdevSocketOptions_members(Visitor *v, NetdevSocketOptions *obj, Error **errp)
423{
424 Error *err = NULL;
425
426 if (visit_optional(v, "fd", &obj->has_fd)) {
427 visit_type_str(v, "fd", &obj->fd, &err);
428 if (err) {
429 goto out;
430 }
431 }
432 if (visit_optional(v, "listen", &obj->has_listen)) {
433 visit_type_str(v, "listen", &obj->listen, &err);
434 if (err) {
435 goto out;
436 }
437 }
438 if (visit_optional(v, "connect", &obj->has_connect)) {
439 visit_type_str(v, "connect", &obj->connect, &err);
440 if (err) {
441 goto out;
442 }
443 }
444 if (visit_optional(v, "mcast", &obj->has_mcast)) {
445 visit_type_str(v, "mcast", &obj->mcast, &err);
446 if (err) {
447 goto out;
448 }
449 }
450 if (visit_optional(v, "localaddr", &obj->has_localaddr)) {
451 visit_type_str(v, "localaddr", &obj->localaddr, &err);
452 if (err) {
453 goto out;
454 }
455 }
456 if (visit_optional(v, "udp", &obj->has_udp)) {
457 visit_type_str(v, "udp", &obj->udp, &err);
458 if (err) {
459 goto out;
460 }
461 }
462
463out:
464 error_propagate(errp, err);
465}
466
467void visit_type_NetdevSocketOptions(Visitor *v, const char *name, NetdevSocketOptions **obj, Error **errp)
468{
469 Error *err = NULL;
470
471 visit_start_struct(v, name, (void **)obj, sizeof(NetdevSocketOptions), &err);
472 if (err) {
473 goto out;
474 }
475 if (!*obj) {
476 goto out_obj;
477 }
478 visit_type_NetdevSocketOptions_members(v, *obj, &err);
479 if (err) {
480 goto out_obj;
481 }
482 visit_check_struct(v, &err);
483out_obj:
484 visit_end_struct(v, (void **)obj);
485 if (err && visit_is_input(v)) {
486 qapi_free_NetdevSocketOptions(*obj);
487 *obj = NULL;
488 }
489out:
490 error_propagate(errp, err);
491}
492
493void visit_type_NetdevL2TPv3Options_members(Visitor *v, NetdevL2TPv3Options *obj, Error **errp)
494{
495 Error *err = NULL;
496
497 visit_type_str(v, "src", &obj->src, &err);
498 if (err) {
499 goto out;
500 }
501 visit_type_str(v, "dst", &obj->dst, &err);
502 if (err) {
503 goto out;
504 }
505 if (visit_optional(v, "srcport", &obj->has_srcport)) {
506 visit_type_str(v, "srcport", &obj->srcport, &err);
507 if (err) {
508 goto out;
509 }
510 }
511 if (visit_optional(v, "dstport", &obj->has_dstport)) {
512 visit_type_str(v, "dstport", &obj->dstport, &err);
513 if (err) {
514 goto out;
515 }
516 }
517 if (visit_optional(v, "ipv6", &obj->has_ipv6)) {
518 visit_type_bool(v, "ipv6", &obj->ipv6, &err);
519 if (err) {
520 goto out;
521 }
522 }
523 if (visit_optional(v, "udp", &obj->has_udp)) {
524 visit_type_bool(v, "udp", &obj->udp, &err);
525 if (err) {
526 goto out;
527 }
528 }
529 if (visit_optional(v, "cookie64", &obj->has_cookie64)) {
530 visit_type_bool(v, "cookie64", &obj->cookie64, &err);
531 if (err) {
532 goto out;
533 }
534 }
535 if (visit_optional(v, "counter", &obj->has_counter)) {
536 visit_type_bool(v, "counter", &obj->counter, &err);
537 if (err) {
538 goto out;
539 }
540 }
541 if (visit_optional(v, "pincounter", &obj->has_pincounter)) {
542 visit_type_bool(v, "pincounter", &obj->pincounter, &err);
543 if (err) {
544 goto out;
545 }
546 }
547 if (visit_optional(v, "txcookie", &obj->has_txcookie)) {
548 visit_type_uint64(v, "txcookie", &obj->txcookie, &err);
549 if (err) {
550 goto out;
551 }
552 }
553 if (visit_optional(v, "rxcookie", &obj->has_rxcookie)) {
554 visit_type_uint64(v, "rxcookie", &obj->rxcookie, &err);
555 if (err) {
556 goto out;
557 }
558 }
559 visit_type_uint32(v, "txsession", &obj->txsession, &err);
560 if (err) {
561 goto out;
562 }
563 if (visit_optional(v, "rxsession", &obj->has_rxsession)) {
564 visit_type_uint32(v, "rxsession", &obj->rxsession, &err);
565 if (err) {
566 goto out;
567 }
568 }
569 if (visit_optional(v, "offset", &obj->has_offset)) {
570 visit_type_uint32(v, "offset", &obj->offset, &err);
571 if (err) {
572 goto out;
573 }
574 }
575
576out:
577 error_propagate(errp, err);
578}
579
580void visit_type_NetdevL2TPv3Options(Visitor *v, const char *name, NetdevL2TPv3Options **obj, Error **errp)
581{
582 Error *err = NULL;
583
584 visit_start_struct(v, name, (void **)obj, sizeof(NetdevL2TPv3Options), &err);
585 if (err) {
586 goto out;
587 }
588 if (!*obj) {
589 goto out_obj;
590 }
591 visit_type_NetdevL2TPv3Options_members(v, *obj, &err);
592 if (err) {
593 goto out_obj;
594 }
595 visit_check_struct(v, &err);
596out_obj:
597 visit_end_struct(v, (void **)obj);
598 if (err && visit_is_input(v)) {
599 qapi_free_NetdevL2TPv3Options(*obj);
600 *obj = NULL;
601 }
602out:
603 error_propagate(errp, err);
604}
605
606void visit_type_NetdevVdeOptions_members(Visitor *v, NetdevVdeOptions *obj, Error **errp)
607{
608 Error *err = NULL;
609
610 if (visit_optional(v, "sock", &obj->has_sock)) {
611 visit_type_str(v, "sock", &obj->sock, &err);
612 if (err) {
613 goto out;
614 }
615 }
616 if (visit_optional(v, "port", &obj->has_port)) {
617 visit_type_uint16(v, "port", &obj->port, &err);
618 if (err) {
619 goto out;
620 }
621 }
622 if (visit_optional(v, "group", &obj->has_group)) {
623 visit_type_str(v, "group", &obj->group, &err);
624 if (err) {
625 goto out;
626 }
627 }
628 if (visit_optional(v, "mode", &obj->has_mode)) {
629 visit_type_uint16(v, "mode", &obj->mode, &err);
630 if (err) {
631 goto out;
632 }
633 }
634
635out:
636 error_propagate(errp, err);
637}
638
639void visit_type_NetdevVdeOptions(Visitor *v, const char *name, NetdevVdeOptions **obj, Error **errp)
640{
641 Error *err = NULL;
642
643 visit_start_struct(v, name, (void **)obj, sizeof(NetdevVdeOptions), &err);
644 if (err) {
645 goto out;
646 }
647 if (!*obj) {
648 goto out_obj;
649 }
650 visit_type_NetdevVdeOptions_members(v, *obj, &err);
651 if (err) {
652 goto out_obj;
653 }
654 visit_check_struct(v, &err);
655out_obj:
656 visit_end_struct(v, (void **)obj);
657 if (err && visit_is_input(v)) {
658 qapi_free_NetdevVdeOptions(*obj);
659 *obj = NULL;
660 }
661out:
662 error_propagate(errp, err);
663}
664
665void visit_type_NetdevBridgeOptions_members(Visitor *v, NetdevBridgeOptions *obj, Error **errp)
666{
667 Error *err = NULL;
668
669 if (visit_optional(v, "br", &obj->has_br)) {
670 visit_type_str(v, "br", &obj->br, &err);
671 if (err) {
672 goto out;
673 }
674 }
675 if (visit_optional(v, "helper", &obj->has_helper)) {
676 visit_type_str(v, "helper", &obj->helper, &err);
677 if (err) {
678 goto out;
679 }
680 }
681
682out:
683 error_propagate(errp, err);
684}
685
686void visit_type_NetdevBridgeOptions(Visitor *v, const char *name, NetdevBridgeOptions **obj, Error **errp)
687{
688 Error *err = NULL;
689
690 visit_start_struct(v, name, (void **)obj, sizeof(NetdevBridgeOptions), &err);
691 if (err) {
692 goto out;
693 }
694 if (!*obj) {
695 goto out_obj;
696 }
697 visit_type_NetdevBridgeOptions_members(v, *obj, &err);
698 if (err) {
699 goto out_obj;
700 }
701 visit_check_struct(v, &err);
702out_obj:
703 visit_end_struct(v, (void **)obj);
704 if (err && visit_is_input(v)) {
705 qapi_free_NetdevBridgeOptions(*obj);
706 *obj = NULL;
707 }
708out:
709 error_propagate(errp, err);
710}
711
712void visit_type_NetdevHubPortOptions_members(Visitor *v, NetdevHubPortOptions *obj, Error **errp)
713{
714 Error *err = NULL;
715
716 visit_type_int32(v, "hubid", &obj->hubid, &err);
717 if (err) {
718 goto out;
719 }
720 if (visit_optional(v, "netdev", &obj->has_netdev)) {
721 visit_type_str(v, "netdev", &obj->netdev, &err);
722 if (err) {
723 goto out;
724 }
725 }
726
727out:
728 error_propagate(errp, err);
729}
730
731void visit_type_NetdevHubPortOptions(Visitor *v, const char *name, NetdevHubPortOptions **obj, Error **errp)
732{
733 Error *err = NULL;
734
735 visit_start_struct(v, name, (void **)obj, sizeof(NetdevHubPortOptions), &err);
736 if (err) {
737 goto out;
738 }
739 if (!*obj) {
740 goto out_obj;
741 }
742 visit_type_NetdevHubPortOptions_members(v, *obj, &err);
743 if (err) {
744 goto out_obj;
745 }
746 visit_check_struct(v, &err);
747out_obj:
748 visit_end_struct(v, (void **)obj);
749 if (err && visit_is_input(v)) {
750 qapi_free_NetdevHubPortOptions(*obj);
751 *obj = NULL;
752 }
753out:
754 error_propagate(errp, err);
755}
756
757void visit_type_NetdevNetmapOptions_members(Visitor *v, NetdevNetmapOptions *obj, Error **errp)
758{
759 Error *err = NULL;
760
761 visit_type_str(v, "ifname", &obj->ifname, &err);
762 if (err) {
763 goto out;
764 }
765 if (visit_optional(v, "devname", &obj->has_devname)) {
766 visit_type_str(v, "devname", &obj->devname, &err);
767 if (err) {
768 goto out;
769 }
770 }
771
772out:
773 error_propagate(errp, err);
774}
775
776void visit_type_NetdevNetmapOptions(Visitor *v, const char *name, NetdevNetmapOptions **obj, Error **errp)
777{
778 Error *err = NULL;
779
780 visit_start_struct(v, name, (void **)obj, sizeof(NetdevNetmapOptions), &err);
781 if (err) {
782 goto out;
783 }
784 if (!*obj) {
785 goto out_obj;
786 }
787 visit_type_NetdevNetmapOptions_members(v, *obj, &err);
788 if (err) {
789 goto out_obj;
790 }
791 visit_check_struct(v, &err);
792out_obj:
793 visit_end_struct(v, (void **)obj);
794 if (err && visit_is_input(v)) {
795 qapi_free_NetdevNetmapOptions(*obj);
796 *obj = NULL;
797 }
798out:
799 error_propagate(errp, err);
800}
801
802void visit_type_NetdevVhostUserOptions_members(Visitor *v, NetdevVhostUserOptions *obj, Error **errp)
803{
804 Error *err = NULL;
805
806 visit_type_str(v, "chardev", &obj->chardev, &err);
807 if (err) {
808 goto out;
809 }
810 if (visit_optional(v, "vhostforce", &obj->has_vhostforce)) {
811 visit_type_bool(v, "vhostforce", &obj->vhostforce, &err);
812 if (err) {
813 goto out;
814 }
815 }
816 if (visit_optional(v, "queues", &obj->has_queues)) {
817 visit_type_int(v, "queues", &obj->queues, &err);
818 if (err) {
819 goto out;
820 }
821 }
822
823out:
824 error_propagate(errp, err);
825}
826
827void visit_type_NetdevVhostUserOptions(Visitor *v, const char *name, NetdevVhostUserOptions **obj, Error **errp)
828{
829 Error *err = NULL;
830
831 visit_start_struct(v, name, (void **)obj, sizeof(NetdevVhostUserOptions), &err);
832 if (err) {
833 goto out;
834 }
835 if (!*obj) {
836 goto out_obj;
837 }
838 visit_type_NetdevVhostUserOptions_members(v, *obj, &err);
839 if (err) {
840 goto out_obj;
841 }
842 visit_check_struct(v, &err);
843out_obj:
844 visit_end_struct(v, (void **)obj);
845 if (err && visit_is_input(v)) {
846 qapi_free_NetdevVhostUserOptions(*obj);
847 *obj = NULL;
848 }
849out:
850 error_propagate(errp, err);
851}
852
853void visit_type_NetClientDriver(Visitor *v, const char *name, NetClientDriver *obj, Error **errp)
854{
855 int value = *obj;
856 visit_type_enum(v, name, &value, &NetClientDriver_lookup, errp);
857 *obj = value;
858}
859
860void visit_type_q_obj_Netdev_base_members(Visitor *v, q_obj_Netdev_base *obj, Error **errp)
861{
862 Error *err = NULL;
863
864 visit_type_str(v, "id", &obj->id, &err);
865 if (err) {
866 goto out;
867 }
868 visit_type_NetClientDriver(v, "type", &obj->type, &err);
869 if (err) {
870 goto out;
871 }
872
873out:
874 error_propagate(errp, err);
875}
876
877void visit_type_Netdev_members(Visitor *v, Netdev *obj, Error **errp)
878{
879 Error *err = NULL;
880
881 visit_type_q_obj_Netdev_base_members(v, (q_obj_Netdev_base *)obj, &err);
882 if (err) {
883 goto out;
884 }
885 switch (obj->type) {
886 case NET_CLIENT_DRIVER_NIC:
887 visit_type_NetLegacyNicOptions_members(v, &obj->u.nic, &err);
888 break;
889 case NET_CLIENT_DRIVER_USER:
890 visit_type_NetdevUserOptions_members(v, &obj->u.user, &err);
891 break;
892 case NET_CLIENT_DRIVER_TAP:
893 visit_type_NetdevTapOptions_members(v, &obj->u.tap, &err);
894 break;
895 case NET_CLIENT_DRIVER_L2TPV3:
896 visit_type_NetdevL2TPv3Options_members(v, &obj->u.l2tpv3, &err);
897 break;
898 case NET_CLIENT_DRIVER_SOCKET:
899 visit_type_NetdevSocketOptions_members(v, &obj->u.socket, &err);
900 break;
901 case NET_CLIENT_DRIVER_VDE:
902 visit_type_NetdevVdeOptions_members(v, &obj->u.vde, &err);
903 break;
904 case NET_CLIENT_DRIVER_BRIDGE:
905 visit_type_NetdevBridgeOptions_members(v, &obj->u.bridge, &err);
906 break;
907 case NET_CLIENT_DRIVER_HUBPORT:
908 visit_type_NetdevHubPortOptions_members(v, &obj->u.hubport, &err);
909 break;
910 case NET_CLIENT_DRIVER_NETMAP:
911 visit_type_NetdevNetmapOptions_members(v, &obj->u.netmap, &err);
912 break;
913 case NET_CLIENT_DRIVER_VHOST_USER:
914 visit_type_NetdevVhostUserOptions_members(v, &obj->u.vhost_user, &err);
915 break;
916 case NET_CLIENT_DRIVER_NONE:
917 break;
918 default:
919 abort();
920 }
921
922out:
923 error_propagate(errp, err);
924}
925
926void visit_type_Netdev(Visitor *v, const char *name, Netdev **obj, Error **errp)
927{
928 Error *err = NULL;
929
930 visit_start_struct(v, name, (void **)obj, sizeof(Netdev), &err);
931 if (err) {
932 goto out;
933 }
934 if (!*obj) {
935 goto out_obj;
936 }
937 visit_type_Netdev_members(v, *obj, &err);
938 if (err) {
939 goto out_obj;
940 }
941 visit_check_struct(v, &err);
942out_obj:
943 visit_end_struct(v, (void **)obj);
944 if (err && visit_is_input(v)) {
945 qapi_free_Netdev(*obj);
946 *obj = NULL;
947 }
948out:
949 error_propagate(errp, err);
950}
951
952void visit_type_NetLegacy_members(Visitor *v, NetLegacy *obj, Error **errp)
953{
954 Error *err = NULL;
955
956 if (visit_optional(v, "id", &obj->has_id)) {
957 visit_type_str(v, "id", &obj->id, &err);
958 if (err) {
959 goto out;
960 }
961 }
962 if (visit_optional(v, "name", &obj->has_name)) {
963 visit_type_str(v, "name", &obj->name, &err);
964 if (err) {
965 goto out;
966 }
967 }
968 visit_type_NetLegacyOptions(v, "opts", &obj->opts, &err);
969 if (err) {
970 goto out;
971 }
972
973out:
974 error_propagate(errp, err);
975}
976
977void visit_type_NetLegacy(Visitor *v, const char *name, NetLegacy **obj, Error **errp)
978{
979 Error *err = NULL;
980
981 visit_start_struct(v, name, (void **)obj, sizeof(NetLegacy), &err);
982 if (err) {
983 goto out;
984 }
985 if (!*obj) {
986 goto out_obj;
987 }
988 visit_type_NetLegacy_members(v, *obj, &err);
989 if (err) {
990 goto out_obj;
991 }
992 visit_check_struct(v, &err);
993out_obj:
994 visit_end_struct(v, (void **)obj);
995 if (err && visit_is_input(v)) {
996 qapi_free_NetLegacy(*obj);
997 *obj = NULL;
998 }
999out:
1000 error_propagate(errp, err);
1001}
1002
1003void visit_type_NetLegacyOptionsType(Visitor *v, const char *name, NetLegacyOptionsType *obj, Error **errp)
1004{
1005 int value = *obj;
1006 visit_type_enum(v, name, &value, &NetLegacyOptionsType_lookup, errp);
1007 *obj = value;
1008}
1009
1010void visit_type_q_obj_NetLegacyOptions_base_members(Visitor *v, q_obj_NetLegacyOptions_base *obj, Error **errp)
1011{
1012 Error *err = NULL;
1013
1014 visit_type_NetLegacyOptionsType(v, "type", &obj->type, &err);
1015 if (err) {
1016 goto out;
1017 }
1018
1019out:
1020 error_propagate(errp, err);
1021}
1022
1023void visit_type_NetLegacyOptions_members(Visitor *v, NetLegacyOptions *obj, Error **errp)
1024{
1025 Error *err = NULL;
1026
1027 visit_type_q_obj_NetLegacyOptions_base_members(v, (q_obj_NetLegacyOptions_base *)obj, &err);
1028 if (err) {
1029 goto out;
1030 }
1031 switch (obj->type) {
1032 case NET_LEGACY_OPTIONS_TYPE_NIC:
1033 visit_type_NetLegacyNicOptions_members(v, &obj->u.nic, &err);
1034 break;
1035 case NET_LEGACY_OPTIONS_TYPE_USER:
1036 visit_type_NetdevUserOptions_members(v, &obj->u.user, &err);
1037 break;
1038 case NET_LEGACY_OPTIONS_TYPE_TAP:
1039 visit_type_NetdevTapOptions_members(v, &obj->u.tap, &err);
1040 break;
1041 case NET_LEGACY_OPTIONS_TYPE_L2TPV3:
1042 visit_type_NetdevL2TPv3Options_members(v, &obj->u.l2tpv3, &err);
1043 break;
1044 case NET_LEGACY_OPTIONS_TYPE_SOCKET:
1045 visit_type_NetdevSocketOptions_members(v, &obj->u.socket, &err);
1046 break;
1047 case NET_LEGACY_OPTIONS_TYPE_VDE:
1048 visit_type_NetdevVdeOptions_members(v, &obj->u.vde, &err);
1049 break;
1050 case NET_LEGACY_OPTIONS_TYPE_BRIDGE:
1051 visit_type_NetdevBridgeOptions_members(v, &obj->u.bridge, &err);
1052 break;
1053 case NET_LEGACY_OPTIONS_TYPE_NETMAP:
1054 visit_type_NetdevNetmapOptions_members(v, &obj->u.netmap, &err);
1055 break;
1056 case NET_LEGACY_OPTIONS_TYPE_VHOST_USER:
1057 visit_type_NetdevVhostUserOptions_members(v, &obj->u.vhost_user, &err);
1058 break;
1059 case NET_LEGACY_OPTIONS_TYPE_NONE:
1060 break;
1061 default:
1062 abort();
1063 }
1064
1065out:
1066 error_propagate(errp, err);
1067}
1068
1069void visit_type_NetLegacyOptions(Visitor *v, const char *name, NetLegacyOptions **obj, Error **errp)
1070{
1071 Error *err = NULL;
1072
1073 visit_start_struct(v, name, (void **)obj, sizeof(NetLegacyOptions), &err);
1074 if (err) {
1075 goto out;
1076 }
1077 if (!*obj) {
1078 goto out_obj;
1079 }
1080 visit_type_NetLegacyOptions_members(v, *obj, &err);
1081 if (err) {
1082 goto out_obj;
1083 }
1084 visit_check_struct(v, &err);
1085out_obj:
1086 visit_end_struct(v, (void **)obj);
1087 if (err && visit_is_input(v)) {
1088 qapi_free_NetLegacyOptions(*obj);
1089 *obj = NULL;
1090 }
1091out:
1092 error_propagate(errp, err);
1093}
1094
1095void visit_type_NetFilterDirection(Visitor *v, const char *name, NetFilterDirection *obj, Error **errp)
1096{
1097 int value = *obj;
1098 visit_type_enum(v, name, &value, &NetFilterDirection_lookup, errp);
1099 *obj = value;
1100}
1101
1102void visit_type_RxState(Visitor *v, const char *name, RxState *obj, Error **errp)
1103{
1104 int value = *obj;
1105 visit_type_enum(v, name, &value, &RxState_lookup, errp);
1106 *obj = value;
1107}
1108
1109void visit_type_RxFilterInfo_members(Visitor *v, RxFilterInfo *obj, Error **errp)
1110{
1111 Error *err = NULL;
1112
1113 visit_type_str(v, "name", &obj->name, &err);
1114 if (err) {
1115 goto out;
1116 }
1117 visit_type_bool(v, "promiscuous", &obj->promiscuous, &err);
1118 if (err) {
1119 goto out;
1120 }
1121 visit_type_RxState(v, "multicast", &obj->multicast, &err);
1122 if (err) {
1123 goto out;
1124 }
1125 visit_type_RxState(v, "unicast", &obj->unicast, &err);
1126 if (err) {
1127 goto out;
1128 }
1129 visit_type_RxState(v, "vlan", &obj->vlan, &err);
1130 if (err) {
1131 goto out;
1132 }
1133 visit_type_bool(v, "broadcast-allowed", &obj->broadcast_allowed, &err);
1134 if (err) {
1135 goto out;
1136 }
1137 visit_type_bool(v, "multicast-overflow", &obj->multicast_overflow, &err);
1138 if (err) {
1139 goto out;
1140 }
1141 visit_type_bool(v, "unicast-overflow", &obj->unicast_overflow, &err);
1142 if (err) {
1143 goto out;
1144 }
1145 visit_type_str(v, "main-mac", &obj->main_mac, &err);
1146 if (err) {
1147 goto out;
1148 }
1149 visit_type_intList(v, "vlan-table", &obj->vlan_table, &err);
1150 if (err) {
1151 goto out;
1152 }
1153 visit_type_strList(v, "unicast-table", &obj->unicast_table, &err);
1154 if (err) {
1155 goto out;
1156 }
1157 visit_type_strList(v, "multicast-table", &obj->multicast_table, &err);
1158 if (err) {
1159 goto out;
1160 }
1161
1162out:
1163 error_propagate(errp, err);
1164}
1165
1166void visit_type_RxFilterInfo(Visitor *v, const char *name, RxFilterInfo **obj, Error **errp)
1167{
1168 Error *err = NULL;
1169
1170 visit_start_struct(v, name, (void **)obj, sizeof(RxFilterInfo), &err);
1171 if (err) {
1172 goto out;
1173 }
1174 if (!*obj) {
1175 goto out_obj;
1176 }
1177 visit_type_RxFilterInfo_members(v, *obj, &err);
1178 if (err) {
1179 goto out_obj;
1180 }
1181 visit_check_struct(v, &err);
1182out_obj:
1183 visit_end_struct(v, (void **)obj);
1184 if (err && visit_is_input(v)) {
1185 qapi_free_RxFilterInfo(*obj);
1186 *obj = NULL;
1187 }
1188out:
1189 error_propagate(errp, err);
1190}
1191
1192void visit_type_q_obj_query_rx_filter_arg_members(Visitor *v, q_obj_query_rx_filter_arg *obj, Error **errp)
1193{
1194 Error *err = NULL;
1195
1196 if (visit_optional(v, "name", &obj->has_name)) {
1197 visit_type_str(v, "name", &obj->name, &err);
1198 if (err) {
1199 goto out;
1200 }
1201 }
1202
1203out:
1204 error_propagate(errp, err);
1205}
1206
1207void visit_type_RxFilterInfoList(Visitor *v, const char *name, RxFilterInfoList **obj, Error **errp)
1208{
1209 Error *err = NULL;
1210 RxFilterInfoList *tail;
1211 size_t size = sizeof(**obj);
1212
1213 visit_start_list(v, name, (GenericList **)obj, size, &err);
1214 if (err) {
1215 goto out;
1216 }
1217
1218 for (tail = *obj; tail;
1219 tail = (RxFilterInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
1220 visit_type_RxFilterInfo(v, NULL, &tail->value, &err);
1221 if (err) {
1222 break;
1223 }
1224 }
1225
1226 if (!err) {
1227 visit_check_list(v, &err);
1228 }
1229 visit_end_list(v, (void **)obj);
1230 if (err && visit_is_input(v)) {
1231 qapi_free_RxFilterInfoList(*obj);
1232 *obj = NULL;
1233 }
1234out:
1235 error_propagate(errp, err);
1236}
1237
1238void visit_type_q_obj_NIC_RX_FILTER_CHANGED_arg_members(Visitor *v, q_obj_NIC_RX_FILTER_CHANGED_arg *obj, Error **errp)
1239{
1240 Error *err = NULL;
1241
1242 if (visit_optional(v, "name", &obj->has_name)) {
1243 visit_type_str(v, "name", &obj->name, &err);
1244 if (err) {
1245 goto out;
1246 }
1247 }
1248 visit_type_str(v, "path", &obj->path, &err);
1249 if (err) {
1250 goto out;
1251 }
1252
1253out:
1254 error_propagate(errp, err);
1255}
1256
1257void visit_type_AnnounceParameters_members(Visitor *v, AnnounceParameters *obj, Error **errp)
1258{
1259 Error *err = NULL;
1260
1261 visit_type_int(v, "initial", &obj->initial, &err);
1262 if (err) {
1263 goto out;
1264 }
1265 visit_type_int(v, "max", &obj->max, &err);
1266 if (err) {
1267 goto out;
1268 }
1269 visit_type_int(v, "rounds", &obj->rounds, &err);
1270 if (err) {
1271 goto out;
1272 }
1273 visit_type_int(v, "step", &obj->step, &err);
1274 if (err) {
1275 goto out;
1276 }
1277 if (visit_optional(v, "interfaces", &obj->has_interfaces)) {
1278 visit_type_strList(v, "interfaces", &obj->interfaces, &err);
1279 if (err) {
1280 goto out;
1281 }
1282 }
1283 if (visit_optional(v, "id", &obj->has_id)) {
1284 visit_type_str(v, "id", &obj->id, &err);
1285 if (err) {
1286 goto out;
1287 }
1288 }
1289
1290out:
1291 error_propagate(errp, err);
1292}
1293
1294void visit_type_AnnounceParameters(Visitor *v, const char *name, AnnounceParameters **obj, Error **errp)
1295{
1296 Error *err = NULL;
1297
1298 visit_start_struct(v, name, (void **)obj, sizeof(AnnounceParameters), &err);
1299 if (err) {
1300 goto out;
1301 }
1302 if (!*obj) {
1303 goto out_obj;
1304 }
1305 visit_type_AnnounceParameters_members(v, *obj, &err);
1306 if (err) {
1307 goto out_obj;
1308 }
1309 visit_check_struct(v, &err);
1310out_obj:
1311 visit_end_struct(v, (void **)obj);
1312 if (err && visit_is_input(v)) {
1313 qapi_free_AnnounceParameters(*obj);
1314 *obj = NULL;
1315 }
1316out:
1317 error_propagate(errp, err);
1318}
1319
1320/* Dummy declaration to prevent empty .o file */
1321char qapi_dummy_qapi_visit_net_c;
1322