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-sockets.h"
17
18void visit_type_NetworkAddressFamily(Visitor *v, const char *name, NetworkAddressFamily *obj, Error **errp)
19{
20 int value = *obj;
21 visit_type_enum(v, name, &value, &NetworkAddressFamily_lookup, errp);
22 *obj = value;
23}
24
25void visit_type_InetSocketAddressBase_members(Visitor *v, InetSocketAddressBase *obj, Error **errp)
26{
27 Error *err = NULL;
28
29 visit_type_str(v, "host", &obj->host, &err);
30 if (err) {
31 goto out;
32 }
33 visit_type_str(v, "port", &obj->port, &err);
34 if (err) {
35 goto out;
36 }
37
38out:
39 error_propagate(errp, err);
40}
41
42void visit_type_InetSocketAddressBase(Visitor *v, const char *name, InetSocketAddressBase **obj, Error **errp)
43{
44 Error *err = NULL;
45
46 visit_start_struct(v, name, (void **)obj, sizeof(InetSocketAddressBase), &err);
47 if (err) {
48 goto out;
49 }
50 if (!*obj) {
51 goto out_obj;
52 }
53 visit_type_InetSocketAddressBase_members(v, *obj, &err);
54 if (err) {
55 goto out_obj;
56 }
57 visit_check_struct(v, &err);
58out_obj:
59 visit_end_struct(v, (void **)obj);
60 if (err && visit_is_input(v)) {
61 qapi_free_InetSocketAddressBase(*obj);
62 *obj = NULL;
63 }
64out:
65 error_propagate(errp, err);
66}
67
68void visit_type_InetSocketAddress_members(Visitor *v, InetSocketAddress *obj, Error **errp)
69{
70 Error *err = NULL;
71
72 visit_type_InetSocketAddressBase_members(v, (InetSocketAddressBase *)obj, &err);
73 if (err) {
74 goto out;
75 }
76 if (visit_optional(v, "numeric", &obj->has_numeric)) {
77 visit_type_bool(v, "numeric", &obj->numeric, &err);
78 if (err) {
79 goto out;
80 }
81 }
82 if (visit_optional(v, "to", &obj->has_to)) {
83 visit_type_uint16(v, "to", &obj->to, &err);
84 if (err) {
85 goto out;
86 }
87 }
88 if (visit_optional(v, "ipv4", &obj->has_ipv4)) {
89 visit_type_bool(v, "ipv4", &obj->ipv4, &err);
90 if (err) {
91 goto out;
92 }
93 }
94 if (visit_optional(v, "ipv6", &obj->has_ipv6)) {
95 visit_type_bool(v, "ipv6", &obj->ipv6, &err);
96 if (err) {
97 goto out;
98 }
99 }
100 if (visit_optional(v, "keep-alive", &obj->has_keep_alive)) {
101 visit_type_bool(v, "keep-alive", &obj->keep_alive, &err);
102 if (err) {
103 goto out;
104 }
105 }
106
107out:
108 error_propagate(errp, err);
109}
110
111void visit_type_InetSocketAddress(Visitor *v, const char *name, InetSocketAddress **obj, Error **errp)
112{
113 Error *err = NULL;
114
115 visit_start_struct(v, name, (void **)obj, sizeof(InetSocketAddress), &err);
116 if (err) {
117 goto out;
118 }
119 if (!*obj) {
120 goto out_obj;
121 }
122 visit_type_InetSocketAddress_members(v, *obj, &err);
123 if (err) {
124 goto out_obj;
125 }
126 visit_check_struct(v, &err);
127out_obj:
128 visit_end_struct(v, (void **)obj);
129 if (err && visit_is_input(v)) {
130 qapi_free_InetSocketAddress(*obj);
131 *obj = NULL;
132 }
133out:
134 error_propagate(errp, err);
135}
136
137void visit_type_UnixSocketAddress_members(Visitor *v, UnixSocketAddress *obj, Error **errp)
138{
139 Error *err = NULL;
140
141 visit_type_str(v, "path", &obj->path, &err);
142 if (err) {
143 goto out;
144 }
145
146out:
147 error_propagate(errp, err);
148}
149
150void visit_type_UnixSocketAddress(Visitor *v, const char *name, UnixSocketAddress **obj, Error **errp)
151{
152 Error *err = NULL;
153
154 visit_start_struct(v, name, (void **)obj, sizeof(UnixSocketAddress), &err);
155 if (err) {
156 goto out;
157 }
158 if (!*obj) {
159 goto out_obj;
160 }
161 visit_type_UnixSocketAddress_members(v, *obj, &err);
162 if (err) {
163 goto out_obj;
164 }
165 visit_check_struct(v, &err);
166out_obj:
167 visit_end_struct(v, (void **)obj);
168 if (err && visit_is_input(v)) {
169 qapi_free_UnixSocketAddress(*obj);
170 *obj = NULL;
171 }
172out:
173 error_propagate(errp, err);
174}
175
176void visit_type_VsockSocketAddress_members(Visitor *v, VsockSocketAddress *obj, Error **errp)
177{
178 Error *err = NULL;
179
180 visit_type_str(v, "cid", &obj->cid, &err);
181 if (err) {
182 goto out;
183 }
184 visit_type_str(v, "port", &obj->port, &err);
185 if (err) {
186 goto out;
187 }
188
189out:
190 error_propagate(errp, err);
191}
192
193void visit_type_VsockSocketAddress(Visitor *v, const char *name, VsockSocketAddress **obj, Error **errp)
194{
195 Error *err = NULL;
196
197 visit_start_struct(v, name, (void **)obj, sizeof(VsockSocketAddress), &err);
198 if (err) {
199 goto out;
200 }
201 if (!*obj) {
202 goto out_obj;
203 }
204 visit_type_VsockSocketAddress_members(v, *obj, &err);
205 if (err) {
206 goto out_obj;
207 }
208 visit_check_struct(v, &err);
209out_obj:
210 visit_end_struct(v, (void **)obj);
211 if (err && visit_is_input(v)) {
212 qapi_free_VsockSocketAddress(*obj);
213 *obj = NULL;
214 }
215out:
216 error_propagate(errp, err);
217}
218
219void visit_type_q_obj_InetSocketAddress_wrapper_members(Visitor *v, q_obj_InetSocketAddress_wrapper *obj, Error **errp)
220{
221 Error *err = NULL;
222
223 visit_type_InetSocketAddress(v, "data", &obj->data, &err);
224 if (err) {
225 goto out;
226 }
227
228out:
229 error_propagate(errp, err);
230}
231
232void visit_type_q_obj_UnixSocketAddress_wrapper_members(Visitor *v, q_obj_UnixSocketAddress_wrapper *obj, Error **errp)
233{
234 Error *err = NULL;
235
236 visit_type_UnixSocketAddress(v, "data", &obj->data, &err);
237 if (err) {
238 goto out;
239 }
240
241out:
242 error_propagate(errp, err);
243}
244
245void visit_type_q_obj_VsockSocketAddress_wrapper_members(Visitor *v, q_obj_VsockSocketAddress_wrapper *obj, Error **errp)
246{
247 Error *err = NULL;
248
249 visit_type_VsockSocketAddress(v, "data", &obj->data, &err);
250 if (err) {
251 goto out;
252 }
253
254out:
255 error_propagate(errp, err);
256}
257
258void visit_type_q_obj_String_wrapper_members(Visitor *v, q_obj_String_wrapper *obj, Error **errp)
259{
260 Error *err = NULL;
261
262 visit_type_String(v, "data", &obj->data, &err);
263 if (err) {
264 goto out;
265 }
266
267out:
268 error_propagate(errp, err);
269}
270
271void visit_type_SocketAddressLegacyKind(Visitor *v, const char *name, SocketAddressLegacyKind *obj, Error **errp)
272{
273 int value = *obj;
274 visit_type_enum(v, name, &value, &SocketAddressLegacyKind_lookup, errp);
275 *obj = value;
276}
277
278void visit_type_SocketAddressLegacy_members(Visitor *v, SocketAddressLegacy *obj, Error **errp)
279{
280 Error *err = NULL;
281
282 visit_type_SocketAddressLegacyKind(v, "type", &obj->type, &err);
283 if (err) {
284 goto out;
285 }
286 switch (obj->type) {
287 case SOCKET_ADDRESS_LEGACY_KIND_INET:
288 visit_type_q_obj_InetSocketAddress_wrapper_members(v, &obj->u.inet, &err);
289 break;
290 case SOCKET_ADDRESS_LEGACY_KIND_UNIX:
291 visit_type_q_obj_UnixSocketAddress_wrapper_members(v, &obj->u.q_unix, &err);
292 break;
293 case SOCKET_ADDRESS_LEGACY_KIND_VSOCK:
294 visit_type_q_obj_VsockSocketAddress_wrapper_members(v, &obj->u.vsock, &err);
295 break;
296 case SOCKET_ADDRESS_LEGACY_KIND_FD:
297 visit_type_q_obj_String_wrapper_members(v, &obj->u.fd, &err);
298 break;
299 default:
300 abort();
301 }
302
303out:
304 error_propagate(errp, err);
305}
306
307void visit_type_SocketAddressLegacy(Visitor *v, const char *name, SocketAddressLegacy **obj, Error **errp)
308{
309 Error *err = NULL;
310
311 visit_start_struct(v, name, (void **)obj, sizeof(SocketAddressLegacy), &err);
312 if (err) {
313 goto out;
314 }
315 if (!*obj) {
316 goto out_obj;
317 }
318 visit_type_SocketAddressLegacy_members(v, *obj, &err);
319 if (err) {
320 goto out_obj;
321 }
322 visit_check_struct(v, &err);
323out_obj:
324 visit_end_struct(v, (void **)obj);
325 if (err && visit_is_input(v)) {
326 qapi_free_SocketAddressLegacy(*obj);
327 *obj = NULL;
328 }
329out:
330 error_propagate(errp, err);
331}
332
333void visit_type_SocketAddressType(Visitor *v, const char *name, SocketAddressType *obj, Error **errp)
334{
335 int value = *obj;
336 visit_type_enum(v, name, &value, &SocketAddressType_lookup, errp);
337 *obj = value;
338}
339
340void visit_type_q_obj_SocketAddress_base_members(Visitor *v, q_obj_SocketAddress_base *obj, Error **errp)
341{
342 Error *err = NULL;
343
344 visit_type_SocketAddressType(v, "type", &obj->type, &err);
345 if (err) {
346 goto out;
347 }
348
349out:
350 error_propagate(errp, err);
351}
352
353void visit_type_SocketAddress_members(Visitor *v, SocketAddress *obj, Error **errp)
354{
355 Error *err = NULL;
356
357 visit_type_q_obj_SocketAddress_base_members(v, (q_obj_SocketAddress_base *)obj, &err);
358 if (err) {
359 goto out;
360 }
361 switch (obj->type) {
362 case SOCKET_ADDRESS_TYPE_INET:
363 visit_type_InetSocketAddress_members(v, &obj->u.inet, &err);
364 break;
365 case SOCKET_ADDRESS_TYPE_UNIX:
366 visit_type_UnixSocketAddress_members(v, &obj->u.q_unix, &err);
367 break;
368 case SOCKET_ADDRESS_TYPE_VSOCK:
369 visit_type_VsockSocketAddress_members(v, &obj->u.vsock, &err);
370 break;
371 case SOCKET_ADDRESS_TYPE_FD:
372 visit_type_String_members(v, &obj->u.fd, &err);
373 break;
374 default:
375 abort();
376 }
377
378out:
379 error_propagate(errp, err);
380}
381
382void visit_type_SocketAddress(Visitor *v, const char *name, SocketAddress **obj, Error **errp)
383{
384 Error *err = NULL;
385
386 visit_start_struct(v, name, (void **)obj, sizeof(SocketAddress), &err);
387 if (err) {
388 goto out;
389 }
390 if (!*obj) {
391 goto out_obj;
392 }
393 visit_type_SocketAddress_members(v, *obj, &err);
394 if (err) {
395 goto out_obj;
396 }
397 visit_check_struct(v, &err);
398out_obj:
399 visit_end_struct(v, (void **)obj);
400 if (err && visit_is_input(v)) {
401 qapi_free_SocketAddress(*obj);
402 *obj = NULL;
403 }
404out:
405 error_propagate(errp, err);
406}
407
408void visit_type_SocketAddressList(Visitor *v, const char *name, SocketAddressList **obj, Error **errp)
409{
410 Error *err = NULL;
411 SocketAddressList *tail;
412 size_t size = sizeof(**obj);
413
414 visit_start_list(v, name, (GenericList **)obj, size, &err);
415 if (err) {
416 goto out;
417 }
418
419 for (tail = *obj; tail;
420 tail = (SocketAddressList *)visit_next_list(v, (GenericList *)tail, size)) {
421 visit_type_SocketAddress(v, NULL, &tail->value, &err);
422 if (err) {
423 break;
424 }
425 }
426
427 if (!err) {
428 visit_check_list(v, &err);
429 }
430 visit_end_list(v, (void **)obj);
431 if (err && visit_is_input(v)) {
432 qapi_free_SocketAddressList(*obj);
433 *obj = NULL;
434 }
435out:
436 error_propagate(errp, err);
437}
438
439void visit_type_InetSocketAddressBaseList(Visitor *v, const char *name, InetSocketAddressBaseList **obj, Error **errp)
440{
441 Error *err = NULL;
442 InetSocketAddressBaseList *tail;
443 size_t size = sizeof(**obj);
444
445 visit_start_list(v, name, (GenericList **)obj, size, &err);
446 if (err) {
447 goto out;
448 }
449
450 for (tail = *obj; tail;
451 tail = (InetSocketAddressBaseList *)visit_next_list(v, (GenericList *)tail, size)) {
452 visit_type_InetSocketAddressBase(v, NULL, &tail->value, &err);
453 if (err) {
454 break;
455 }
456 }
457
458 if (!err) {
459 visit_check_list(v, &err);
460 }
461 visit_end_list(v, (void **)obj);
462 if (err && visit_is_input(v)) {
463 qapi_free_InetSocketAddressBaseList(*obj);
464 *obj = NULL;
465 }
466out:
467 error_propagate(errp, err);
468}
469
470/* Dummy declaration to prevent empty .o file */
471char qapi_dummy_qapi_visit_sockets_c;
472