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-rocker.h" |
17 | |
18 | void visit_type_RockerSwitch_members(Visitor *v, RockerSwitch *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_uint64(v, "id" , &obj->id, &err); |
27 | if (err) { |
28 | goto out; |
29 | } |
30 | visit_type_uint32(v, "ports" , &obj->ports, &err); |
31 | if (err) { |
32 | goto out; |
33 | } |
34 | |
35 | out: |
36 | error_propagate(errp, err); |
37 | } |
38 | |
39 | void visit_type_RockerSwitch(Visitor *v, const char *name, RockerSwitch **obj, Error **errp) |
40 | { |
41 | Error *err = NULL; |
42 | |
43 | visit_start_struct(v, name, (void **)obj, sizeof(RockerSwitch), &err); |
44 | if (err) { |
45 | goto out; |
46 | } |
47 | if (!*obj) { |
48 | goto out_obj; |
49 | } |
50 | visit_type_RockerSwitch_members(v, *obj, &err); |
51 | if (err) { |
52 | goto out_obj; |
53 | } |
54 | visit_check_struct(v, &err); |
55 | out_obj: |
56 | visit_end_struct(v, (void **)obj); |
57 | if (err && visit_is_input(v)) { |
58 | qapi_free_RockerSwitch(*obj); |
59 | *obj = NULL; |
60 | } |
61 | out: |
62 | error_propagate(errp, err); |
63 | } |
64 | |
65 | void visit_type_q_obj_query_rocker_arg_members(Visitor *v, q_obj_query_rocker_arg *obj, Error **errp) |
66 | { |
67 | Error *err = NULL; |
68 | |
69 | visit_type_str(v, "name" , &obj->name, &err); |
70 | if (err) { |
71 | goto out; |
72 | } |
73 | |
74 | out: |
75 | error_propagate(errp, err); |
76 | } |
77 | |
78 | void visit_type_RockerPortDuplex(Visitor *v, const char *name, RockerPortDuplex *obj, Error **errp) |
79 | { |
80 | int value = *obj; |
81 | visit_type_enum(v, name, &value, &RockerPortDuplex_lookup, errp); |
82 | *obj = value; |
83 | } |
84 | |
85 | void visit_type_RockerPortAutoneg(Visitor *v, const char *name, RockerPortAutoneg *obj, Error **errp) |
86 | { |
87 | int value = *obj; |
88 | visit_type_enum(v, name, &value, &RockerPortAutoneg_lookup, errp); |
89 | *obj = value; |
90 | } |
91 | |
92 | void visit_type_RockerPort_members(Visitor *v, RockerPort *obj, Error **errp) |
93 | { |
94 | Error *err = NULL; |
95 | |
96 | visit_type_str(v, "name" , &obj->name, &err); |
97 | if (err) { |
98 | goto out; |
99 | } |
100 | visit_type_bool(v, "enabled" , &obj->enabled, &err); |
101 | if (err) { |
102 | goto out; |
103 | } |
104 | visit_type_bool(v, "link-up" , &obj->link_up, &err); |
105 | if (err) { |
106 | goto out; |
107 | } |
108 | visit_type_uint32(v, "speed" , &obj->speed, &err); |
109 | if (err) { |
110 | goto out; |
111 | } |
112 | visit_type_RockerPortDuplex(v, "duplex" , &obj->duplex, &err); |
113 | if (err) { |
114 | goto out; |
115 | } |
116 | visit_type_RockerPortAutoneg(v, "autoneg" , &obj->autoneg, &err); |
117 | if (err) { |
118 | goto out; |
119 | } |
120 | |
121 | out: |
122 | error_propagate(errp, err); |
123 | } |
124 | |
125 | void visit_type_RockerPort(Visitor *v, const char *name, RockerPort **obj, Error **errp) |
126 | { |
127 | Error *err = NULL; |
128 | |
129 | visit_start_struct(v, name, (void **)obj, sizeof(RockerPort), &err); |
130 | if (err) { |
131 | goto out; |
132 | } |
133 | if (!*obj) { |
134 | goto out_obj; |
135 | } |
136 | visit_type_RockerPort_members(v, *obj, &err); |
137 | if (err) { |
138 | goto out_obj; |
139 | } |
140 | visit_check_struct(v, &err); |
141 | out_obj: |
142 | visit_end_struct(v, (void **)obj); |
143 | if (err && visit_is_input(v)) { |
144 | qapi_free_RockerPort(*obj); |
145 | *obj = NULL; |
146 | } |
147 | out: |
148 | error_propagate(errp, err); |
149 | } |
150 | |
151 | void visit_type_q_obj_query_rocker_ports_arg_members(Visitor *v, q_obj_query_rocker_ports_arg *obj, Error **errp) |
152 | { |
153 | Error *err = NULL; |
154 | |
155 | visit_type_str(v, "name" , &obj->name, &err); |
156 | if (err) { |
157 | goto out; |
158 | } |
159 | |
160 | out: |
161 | error_propagate(errp, err); |
162 | } |
163 | |
164 | void visit_type_RockerPortList(Visitor *v, const char *name, RockerPortList **obj, Error **errp) |
165 | { |
166 | Error *err = NULL; |
167 | RockerPortList *tail; |
168 | size_t size = sizeof(**obj); |
169 | |
170 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
171 | if (err) { |
172 | goto out; |
173 | } |
174 | |
175 | for (tail = *obj; tail; |
176 | tail = (RockerPortList *)visit_next_list(v, (GenericList *)tail, size)) { |
177 | visit_type_RockerPort(v, NULL, &tail->value, &err); |
178 | if (err) { |
179 | break; |
180 | } |
181 | } |
182 | |
183 | if (!err) { |
184 | visit_check_list(v, &err); |
185 | } |
186 | visit_end_list(v, (void **)obj); |
187 | if (err && visit_is_input(v)) { |
188 | qapi_free_RockerPortList(*obj); |
189 | *obj = NULL; |
190 | } |
191 | out: |
192 | error_propagate(errp, err); |
193 | } |
194 | |
195 | void visit_type_RockerOfDpaFlowKey_members(Visitor *v, RockerOfDpaFlowKey *obj, Error **errp) |
196 | { |
197 | Error *err = NULL; |
198 | |
199 | visit_type_uint32(v, "priority" , &obj->priority, &err); |
200 | if (err) { |
201 | goto out; |
202 | } |
203 | visit_type_uint32(v, "tbl-id" , &obj->tbl_id, &err); |
204 | if (err) { |
205 | goto out; |
206 | } |
207 | if (visit_optional(v, "in-pport" , &obj->has_in_pport)) { |
208 | visit_type_uint32(v, "in-pport" , &obj->in_pport, &err); |
209 | if (err) { |
210 | goto out; |
211 | } |
212 | } |
213 | if (visit_optional(v, "tunnel-id" , &obj->has_tunnel_id)) { |
214 | visit_type_uint32(v, "tunnel-id" , &obj->tunnel_id, &err); |
215 | if (err) { |
216 | goto out; |
217 | } |
218 | } |
219 | if (visit_optional(v, "vlan-id" , &obj->has_vlan_id)) { |
220 | visit_type_uint16(v, "vlan-id" , &obj->vlan_id, &err); |
221 | if (err) { |
222 | goto out; |
223 | } |
224 | } |
225 | if (visit_optional(v, "eth-type" , &obj->has_eth_type)) { |
226 | visit_type_uint16(v, "eth-type" , &obj->eth_type, &err); |
227 | if (err) { |
228 | goto out; |
229 | } |
230 | } |
231 | if (visit_optional(v, "eth-src" , &obj->has_eth_src)) { |
232 | visit_type_str(v, "eth-src" , &obj->eth_src, &err); |
233 | if (err) { |
234 | goto out; |
235 | } |
236 | } |
237 | if (visit_optional(v, "eth-dst" , &obj->has_eth_dst)) { |
238 | visit_type_str(v, "eth-dst" , &obj->eth_dst, &err); |
239 | if (err) { |
240 | goto out; |
241 | } |
242 | } |
243 | if (visit_optional(v, "ip-proto" , &obj->has_ip_proto)) { |
244 | visit_type_uint8(v, "ip-proto" , &obj->ip_proto, &err); |
245 | if (err) { |
246 | goto out; |
247 | } |
248 | } |
249 | if (visit_optional(v, "ip-tos" , &obj->has_ip_tos)) { |
250 | visit_type_uint8(v, "ip-tos" , &obj->ip_tos, &err); |
251 | if (err) { |
252 | goto out; |
253 | } |
254 | } |
255 | if (visit_optional(v, "ip-dst" , &obj->has_ip_dst)) { |
256 | visit_type_str(v, "ip-dst" , &obj->ip_dst, &err); |
257 | if (err) { |
258 | goto out; |
259 | } |
260 | } |
261 | |
262 | out: |
263 | error_propagate(errp, err); |
264 | } |
265 | |
266 | void visit_type_RockerOfDpaFlowKey(Visitor *v, const char *name, RockerOfDpaFlowKey **obj, Error **errp) |
267 | { |
268 | Error *err = NULL; |
269 | |
270 | visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlowKey), &err); |
271 | if (err) { |
272 | goto out; |
273 | } |
274 | if (!*obj) { |
275 | goto out_obj; |
276 | } |
277 | visit_type_RockerOfDpaFlowKey_members(v, *obj, &err); |
278 | if (err) { |
279 | goto out_obj; |
280 | } |
281 | visit_check_struct(v, &err); |
282 | out_obj: |
283 | visit_end_struct(v, (void **)obj); |
284 | if (err && visit_is_input(v)) { |
285 | qapi_free_RockerOfDpaFlowKey(*obj); |
286 | *obj = NULL; |
287 | } |
288 | out: |
289 | error_propagate(errp, err); |
290 | } |
291 | |
292 | void visit_type_RockerOfDpaFlowMask_members(Visitor *v, RockerOfDpaFlowMask *obj, Error **errp) |
293 | { |
294 | Error *err = NULL; |
295 | |
296 | if (visit_optional(v, "in-pport" , &obj->has_in_pport)) { |
297 | visit_type_uint32(v, "in-pport" , &obj->in_pport, &err); |
298 | if (err) { |
299 | goto out; |
300 | } |
301 | } |
302 | if (visit_optional(v, "tunnel-id" , &obj->has_tunnel_id)) { |
303 | visit_type_uint32(v, "tunnel-id" , &obj->tunnel_id, &err); |
304 | if (err) { |
305 | goto out; |
306 | } |
307 | } |
308 | if (visit_optional(v, "vlan-id" , &obj->has_vlan_id)) { |
309 | visit_type_uint16(v, "vlan-id" , &obj->vlan_id, &err); |
310 | if (err) { |
311 | goto out; |
312 | } |
313 | } |
314 | if (visit_optional(v, "eth-src" , &obj->has_eth_src)) { |
315 | visit_type_str(v, "eth-src" , &obj->eth_src, &err); |
316 | if (err) { |
317 | goto out; |
318 | } |
319 | } |
320 | if (visit_optional(v, "eth-dst" , &obj->has_eth_dst)) { |
321 | visit_type_str(v, "eth-dst" , &obj->eth_dst, &err); |
322 | if (err) { |
323 | goto out; |
324 | } |
325 | } |
326 | if (visit_optional(v, "ip-proto" , &obj->has_ip_proto)) { |
327 | visit_type_uint8(v, "ip-proto" , &obj->ip_proto, &err); |
328 | if (err) { |
329 | goto out; |
330 | } |
331 | } |
332 | if (visit_optional(v, "ip-tos" , &obj->has_ip_tos)) { |
333 | visit_type_uint8(v, "ip-tos" , &obj->ip_tos, &err); |
334 | if (err) { |
335 | goto out; |
336 | } |
337 | } |
338 | |
339 | out: |
340 | error_propagate(errp, err); |
341 | } |
342 | |
343 | void visit_type_RockerOfDpaFlowMask(Visitor *v, const char *name, RockerOfDpaFlowMask **obj, Error **errp) |
344 | { |
345 | Error *err = NULL; |
346 | |
347 | visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlowMask), &err); |
348 | if (err) { |
349 | goto out; |
350 | } |
351 | if (!*obj) { |
352 | goto out_obj; |
353 | } |
354 | visit_type_RockerOfDpaFlowMask_members(v, *obj, &err); |
355 | if (err) { |
356 | goto out_obj; |
357 | } |
358 | visit_check_struct(v, &err); |
359 | out_obj: |
360 | visit_end_struct(v, (void **)obj); |
361 | if (err && visit_is_input(v)) { |
362 | qapi_free_RockerOfDpaFlowMask(*obj); |
363 | *obj = NULL; |
364 | } |
365 | out: |
366 | error_propagate(errp, err); |
367 | } |
368 | |
369 | void visit_type_RockerOfDpaFlowAction_members(Visitor *v, RockerOfDpaFlowAction *obj, Error **errp) |
370 | { |
371 | Error *err = NULL; |
372 | |
373 | if (visit_optional(v, "goto-tbl" , &obj->has_goto_tbl)) { |
374 | visit_type_uint32(v, "goto-tbl" , &obj->goto_tbl, &err); |
375 | if (err) { |
376 | goto out; |
377 | } |
378 | } |
379 | if (visit_optional(v, "group-id" , &obj->has_group_id)) { |
380 | visit_type_uint32(v, "group-id" , &obj->group_id, &err); |
381 | if (err) { |
382 | goto out; |
383 | } |
384 | } |
385 | if (visit_optional(v, "tunnel-lport" , &obj->has_tunnel_lport)) { |
386 | visit_type_uint32(v, "tunnel-lport" , &obj->tunnel_lport, &err); |
387 | if (err) { |
388 | goto out; |
389 | } |
390 | } |
391 | if (visit_optional(v, "vlan-id" , &obj->has_vlan_id)) { |
392 | visit_type_uint16(v, "vlan-id" , &obj->vlan_id, &err); |
393 | if (err) { |
394 | goto out; |
395 | } |
396 | } |
397 | if (visit_optional(v, "new-vlan-id" , &obj->has_new_vlan_id)) { |
398 | visit_type_uint16(v, "new-vlan-id" , &obj->new_vlan_id, &err); |
399 | if (err) { |
400 | goto out; |
401 | } |
402 | } |
403 | if (visit_optional(v, "out-pport" , &obj->has_out_pport)) { |
404 | visit_type_uint32(v, "out-pport" , &obj->out_pport, &err); |
405 | if (err) { |
406 | goto out; |
407 | } |
408 | } |
409 | |
410 | out: |
411 | error_propagate(errp, err); |
412 | } |
413 | |
414 | void visit_type_RockerOfDpaFlowAction(Visitor *v, const char *name, RockerOfDpaFlowAction **obj, Error **errp) |
415 | { |
416 | Error *err = NULL; |
417 | |
418 | visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlowAction), &err); |
419 | if (err) { |
420 | goto out; |
421 | } |
422 | if (!*obj) { |
423 | goto out_obj; |
424 | } |
425 | visit_type_RockerOfDpaFlowAction_members(v, *obj, &err); |
426 | if (err) { |
427 | goto out_obj; |
428 | } |
429 | visit_check_struct(v, &err); |
430 | out_obj: |
431 | visit_end_struct(v, (void **)obj); |
432 | if (err && visit_is_input(v)) { |
433 | qapi_free_RockerOfDpaFlowAction(*obj); |
434 | *obj = NULL; |
435 | } |
436 | out: |
437 | error_propagate(errp, err); |
438 | } |
439 | |
440 | void visit_type_RockerOfDpaFlow_members(Visitor *v, RockerOfDpaFlow *obj, Error **errp) |
441 | { |
442 | Error *err = NULL; |
443 | |
444 | visit_type_uint64(v, "cookie" , &obj->cookie, &err); |
445 | if (err) { |
446 | goto out; |
447 | } |
448 | visit_type_uint64(v, "hits" , &obj->hits, &err); |
449 | if (err) { |
450 | goto out; |
451 | } |
452 | visit_type_RockerOfDpaFlowKey(v, "key" , &obj->key, &err); |
453 | if (err) { |
454 | goto out; |
455 | } |
456 | visit_type_RockerOfDpaFlowMask(v, "mask" , &obj->mask, &err); |
457 | if (err) { |
458 | goto out; |
459 | } |
460 | visit_type_RockerOfDpaFlowAction(v, "action" , &obj->action, &err); |
461 | if (err) { |
462 | goto out; |
463 | } |
464 | |
465 | out: |
466 | error_propagate(errp, err); |
467 | } |
468 | |
469 | void visit_type_RockerOfDpaFlow(Visitor *v, const char *name, RockerOfDpaFlow **obj, Error **errp) |
470 | { |
471 | Error *err = NULL; |
472 | |
473 | visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlow), &err); |
474 | if (err) { |
475 | goto out; |
476 | } |
477 | if (!*obj) { |
478 | goto out_obj; |
479 | } |
480 | visit_type_RockerOfDpaFlow_members(v, *obj, &err); |
481 | if (err) { |
482 | goto out_obj; |
483 | } |
484 | visit_check_struct(v, &err); |
485 | out_obj: |
486 | visit_end_struct(v, (void **)obj); |
487 | if (err && visit_is_input(v)) { |
488 | qapi_free_RockerOfDpaFlow(*obj); |
489 | *obj = NULL; |
490 | } |
491 | out: |
492 | error_propagate(errp, err); |
493 | } |
494 | |
495 | void visit_type_q_obj_query_rocker_of_dpa_flows_arg_members(Visitor *v, q_obj_query_rocker_of_dpa_flows_arg *obj, Error **errp) |
496 | { |
497 | Error *err = NULL; |
498 | |
499 | visit_type_str(v, "name" , &obj->name, &err); |
500 | if (err) { |
501 | goto out; |
502 | } |
503 | if (visit_optional(v, "tbl-id" , &obj->has_tbl_id)) { |
504 | visit_type_uint32(v, "tbl-id" , &obj->tbl_id, &err); |
505 | if (err) { |
506 | goto out; |
507 | } |
508 | } |
509 | |
510 | out: |
511 | error_propagate(errp, err); |
512 | } |
513 | |
514 | void visit_type_RockerOfDpaFlowList(Visitor *v, const char *name, RockerOfDpaFlowList **obj, Error **errp) |
515 | { |
516 | Error *err = NULL; |
517 | RockerOfDpaFlowList *tail; |
518 | size_t size = sizeof(**obj); |
519 | |
520 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
521 | if (err) { |
522 | goto out; |
523 | } |
524 | |
525 | for (tail = *obj; tail; |
526 | tail = (RockerOfDpaFlowList *)visit_next_list(v, (GenericList *)tail, size)) { |
527 | visit_type_RockerOfDpaFlow(v, NULL, &tail->value, &err); |
528 | if (err) { |
529 | break; |
530 | } |
531 | } |
532 | |
533 | if (!err) { |
534 | visit_check_list(v, &err); |
535 | } |
536 | visit_end_list(v, (void **)obj); |
537 | if (err && visit_is_input(v)) { |
538 | qapi_free_RockerOfDpaFlowList(*obj); |
539 | *obj = NULL; |
540 | } |
541 | out: |
542 | error_propagate(errp, err); |
543 | } |
544 | |
545 | void visit_type_RockerOfDpaGroup_members(Visitor *v, RockerOfDpaGroup *obj, Error **errp) |
546 | { |
547 | Error *err = NULL; |
548 | |
549 | visit_type_uint32(v, "id" , &obj->id, &err); |
550 | if (err) { |
551 | goto out; |
552 | } |
553 | visit_type_uint8(v, "type" , &obj->type, &err); |
554 | if (err) { |
555 | goto out; |
556 | } |
557 | if (visit_optional(v, "vlan-id" , &obj->has_vlan_id)) { |
558 | visit_type_uint16(v, "vlan-id" , &obj->vlan_id, &err); |
559 | if (err) { |
560 | goto out; |
561 | } |
562 | } |
563 | if (visit_optional(v, "pport" , &obj->has_pport)) { |
564 | visit_type_uint32(v, "pport" , &obj->pport, &err); |
565 | if (err) { |
566 | goto out; |
567 | } |
568 | } |
569 | if (visit_optional(v, "index" , &obj->has_index)) { |
570 | visit_type_uint32(v, "index" , &obj->index, &err); |
571 | if (err) { |
572 | goto out; |
573 | } |
574 | } |
575 | if (visit_optional(v, "out-pport" , &obj->has_out_pport)) { |
576 | visit_type_uint32(v, "out-pport" , &obj->out_pport, &err); |
577 | if (err) { |
578 | goto out; |
579 | } |
580 | } |
581 | if (visit_optional(v, "group-id" , &obj->has_group_id)) { |
582 | visit_type_uint32(v, "group-id" , &obj->group_id, &err); |
583 | if (err) { |
584 | goto out; |
585 | } |
586 | } |
587 | if (visit_optional(v, "set-vlan-id" , &obj->has_set_vlan_id)) { |
588 | visit_type_uint16(v, "set-vlan-id" , &obj->set_vlan_id, &err); |
589 | if (err) { |
590 | goto out; |
591 | } |
592 | } |
593 | if (visit_optional(v, "pop-vlan" , &obj->has_pop_vlan)) { |
594 | visit_type_uint8(v, "pop-vlan" , &obj->pop_vlan, &err); |
595 | if (err) { |
596 | goto out; |
597 | } |
598 | } |
599 | if (visit_optional(v, "group-ids" , &obj->has_group_ids)) { |
600 | visit_type_uint32List(v, "group-ids" , &obj->group_ids, &err); |
601 | if (err) { |
602 | goto out; |
603 | } |
604 | } |
605 | if (visit_optional(v, "set-eth-src" , &obj->has_set_eth_src)) { |
606 | visit_type_str(v, "set-eth-src" , &obj->set_eth_src, &err); |
607 | if (err) { |
608 | goto out; |
609 | } |
610 | } |
611 | if (visit_optional(v, "set-eth-dst" , &obj->has_set_eth_dst)) { |
612 | visit_type_str(v, "set-eth-dst" , &obj->set_eth_dst, &err); |
613 | if (err) { |
614 | goto out; |
615 | } |
616 | } |
617 | if (visit_optional(v, "ttl-check" , &obj->has_ttl_check)) { |
618 | visit_type_uint8(v, "ttl-check" , &obj->ttl_check, &err); |
619 | if (err) { |
620 | goto out; |
621 | } |
622 | } |
623 | |
624 | out: |
625 | error_propagate(errp, err); |
626 | } |
627 | |
628 | void visit_type_RockerOfDpaGroup(Visitor *v, const char *name, RockerOfDpaGroup **obj, Error **errp) |
629 | { |
630 | Error *err = NULL; |
631 | |
632 | visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaGroup), &err); |
633 | if (err) { |
634 | goto out; |
635 | } |
636 | if (!*obj) { |
637 | goto out_obj; |
638 | } |
639 | visit_type_RockerOfDpaGroup_members(v, *obj, &err); |
640 | if (err) { |
641 | goto out_obj; |
642 | } |
643 | visit_check_struct(v, &err); |
644 | out_obj: |
645 | visit_end_struct(v, (void **)obj); |
646 | if (err && visit_is_input(v)) { |
647 | qapi_free_RockerOfDpaGroup(*obj); |
648 | *obj = NULL; |
649 | } |
650 | out: |
651 | error_propagate(errp, err); |
652 | } |
653 | |
654 | void visit_type_q_obj_query_rocker_of_dpa_groups_arg_members(Visitor *v, q_obj_query_rocker_of_dpa_groups_arg *obj, Error **errp) |
655 | { |
656 | Error *err = NULL; |
657 | |
658 | visit_type_str(v, "name" , &obj->name, &err); |
659 | if (err) { |
660 | goto out; |
661 | } |
662 | if (visit_optional(v, "type" , &obj->has_type)) { |
663 | visit_type_uint8(v, "type" , &obj->type, &err); |
664 | if (err) { |
665 | goto out; |
666 | } |
667 | } |
668 | |
669 | out: |
670 | error_propagate(errp, err); |
671 | } |
672 | |
673 | void visit_type_RockerOfDpaGroupList(Visitor *v, const char *name, RockerOfDpaGroupList **obj, Error **errp) |
674 | { |
675 | Error *err = NULL; |
676 | RockerOfDpaGroupList *tail; |
677 | size_t size = sizeof(**obj); |
678 | |
679 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
680 | if (err) { |
681 | goto out; |
682 | } |
683 | |
684 | for (tail = *obj; tail; |
685 | tail = (RockerOfDpaGroupList *)visit_next_list(v, (GenericList *)tail, size)) { |
686 | visit_type_RockerOfDpaGroup(v, NULL, &tail->value, &err); |
687 | if (err) { |
688 | break; |
689 | } |
690 | } |
691 | |
692 | if (!err) { |
693 | visit_check_list(v, &err); |
694 | } |
695 | visit_end_list(v, (void **)obj); |
696 | if (err && visit_is_input(v)) { |
697 | qapi_free_RockerOfDpaGroupList(*obj); |
698 | *obj = NULL; |
699 | } |
700 | out: |
701 | error_propagate(errp, err); |
702 | } |
703 | |
704 | /* Dummy declaration to prevent empty .o file */ |
705 | char qapi_dummy_qapi_visit_rocker_c; |
706 | |