1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * Schema-defined QAPI types
5 *
6 * Copyright IBM, Corp. 2011
7 * Copyright (c) 2013-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#ifndef QAPI_TYPES_CHAR_H
14#define QAPI_TYPES_CHAR_H
15
16#include "qapi/qapi-builtin-types.h"
17#include "qapi-types-sockets.h"
18
19typedef struct ChardevInfo ChardevInfo;
20
21typedef struct ChardevInfoList ChardevInfoList;
22
23typedef struct ChardevBackendInfo ChardevBackendInfo;
24
25typedef struct ChardevBackendInfoList ChardevBackendInfoList;
26
27typedef enum DataFormat {
28 DATA_FORMAT_UTF8,
29 DATA_FORMAT_BASE64,
30 DATA_FORMAT__MAX,
31} DataFormat;
32
33#define DataFormat_str(val) \
34 qapi_enum_lookup(&DataFormat_lookup, (val))
35
36extern const QEnumLookup DataFormat_lookup;
37
38typedef struct q_obj_ringbuf_write_arg q_obj_ringbuf_write_arg;
39
40typedef struct q_obj_ringbuf_read_arg q_obj_ringbuf_read_arg;
41
42typedef struct ChardevCommon ChardevCommon;
43
44typedef struct ChardevFile ChardevFile;
45
46typedef struct ChardevHostdev ChardevHostdev;
47
48typedef struct ChardevSocket ChardevSocket;
49
50typedef struct ChardevUdp ChardevUdp;
51
52typedef struct ChardevMux ChardevMux;
53
54typedef struct ChardevStdio ChardevStdio;
55
56#if defined(CONFIG_SPICE)
57typedef struct ChardevSpiceChannel ChardevSpiceChannel;
58#endif /* defined(CONFIG_SPICE) */
59
60#if defined(CONFIG_SPICE)
61typedef struct ChardevSpicePort ChardevSpicePort;
62#endif /* defined(CONFIG_SPICE) */
63
64typedef struct ChardevVC ChardevVC;
65
66typedef struct ChardevRingbuf ChardevRingbuf;
67
68typedef struct q_obj_ChardevFile_wrapper q_obj_ChardevFile_wrapper;
69
70typedef struct q_obj_ChardevHostdev_wrapper q_obj_ChardevHostdev_wrapper;
71
72typedef struct q_obj_ChardevSocket_wrapper q_obj_ChardevSocket_wrapper;
73
74typedef struct q_obj_ChardevUdp_wrapper q_obj_ChardevUdp_wrapper;
75
76typedef struct q_obj_ChardevCommon_wrapper q_obj_ChardevCommon_wrapper;
77
78typedef struct q_obj_ChardevMux_wrapper q_obj_ChardevMux_wrapper;
79
80typedef struct q_obj_ChardevStdio_wrapper q_obj_ChardevStdio_wrapper;
81
82#if defined(CONFIG_SPICE)
83typedef struct q_obj_ChardevSpiceChannel_wrapper q_obj_ChardevSpiceChannel_wrapper;
84#endif /* defined(CONFIG_SPICE) */
85
86#if defined(CONFIG_SPICE)
87typedef struct q_obj_ChardevSpicePort_wrapper q_obj_ChardevSpicePort_wrapper;
88#endif /* defined(CONFIG_SPICE) */
89
90typedef struct q_obj_ChardevVC_wrapper q_obj_ChardevVC_wrapper;
91
92typedef struct q_obj_ChardevRingbuf_wrapper q_obj_ChardevRingbuf_wrapper;
93
94typedef enum ChardevBackendKind {
95 CHARDEV_BACKEND_KIND_FILE,
96 CHARDEV_BACKEND_KIND_SERIAL,
97 CHARDEV_BACKEND_KIND_PARALLEL,
98 CHARDEV_BACKEND_KIND_PIPE,
99 CHARDEV_BACKEND_KIND_SOCKET,
100 CHARDEV_BACKEND_KIND_UDP,
101 CHARDEV_BACKEND_KIND_PTY,
102 CHARDEV_BACKEND_KIND_NULL,
103 CHARDEV_BACKEND_KIND_MUX,
104 CHARDEV_BACKEND_KIND_MSMOUSE,
105 CHARDEV_BACKEND_KIND_WCTABLET,
106 CHARDEV_BACKEND_KIND_BRAILLE,
107 CHARDEV_BACKEND_KIND_TESTDEV,
108 CHARDEV_BACKEND_KIND_STDIO,
109 CHARDEV_BACKEND_KIND_CONSOLE,
110#if defined(CONFIG_SPICE)
111 CHARDEV_BACKEND_KIND_SPICEVMC,
112#endif /* defined(CONFIG_SPICE) */
113#if defined(CONFIG_SPICE)
114 CHARDEV_BACKEND_KIND_SPICEPORT,
115#endif /* defined(CONFIG_SPICE) */
116 CHARDEV_BACKEND_KIND_VC,
117 CHARDEV_BACKEND_KIND_RINGBUF,
118 CHARDEV_BACKEND_KIND_MEMORY,
119 CHARDEV_BACKEND_KIND__MAX,
120} ChardevBackendKind;
121
122#define ChardevBackendKind_str(val) \
123 qapi_enum_lookup(&ChardevBackendKind_lookup, (val))
124
125extern const QEnumLookup ChardevBackendKind_lookup;
126
127typedef struct ChardevBackend ChardevBackend;
128
129typedef struct ChardevReturn ChardevReturn;
130
131typedef struct q_obj_chardev_add_arg q_obj_chardev_add_arg;
132
133typedef struct q_obj_chardev_change_arg q_obj_chardev_change_arg;
134
135typedef struct q_obj_chardev_remove_arg q_obj_chardev_remove_arg;
136
137typedef struct q_obj_chardev_send_break_arg q_obj_chardev_send_break_arg;
138
139typedef struct q_obj_VSERPORT_CHANGE_arg q_obj_VSERPORT_CHANGE_arg;
140
141struct ChardevInfo {
142 char *label;
143 char *filename;
144 bool frontend_open;
145};
146
147void qapi_free_ChardevInfo(ChardevInfo *obj);
148
149struct ChardevInfoList {
150 ChardevInfoList *next;
151 ChardevInfo *value;
152};
153
154void qapi_free_ChardevInfoList(ChardevInfoList *obj);
155
156struct ChardevBackendInfo {
157 char *name;
158};
159
160void qapi_free_ChardevBackendInfo(ChardevBackendInfo *obj);
161
162struct ChardevBackendInfoList {
163 ChardevBackendInfoList *next;
164 ChardevBackendInfo *value;
165};
166
167void qapi_free_ChardevBackendInfoList(ChardevBackendInfoList *obj);
168
169struct q_obj_ringbuf_write_arg {
170 char *device;
171 char *data;
172 bool has_format;
173 DataFormat format;
174};
175
176struct q_obj_ringbuf_read_arg {
177 char *device;
178 int64_t size;
179 bool has_format;
180 DataFormat format;
181};
182
183struct ChardevCommon {
184 bool has_logfile;
185 char *logfile;
186 bool has_logappend;
187 bool logappend;
188};
189
190void qapi_free_ChardevCommon(ChardevCommon *obj);
191
192struct ChardevFile {
193 /* Members inherited from ChardevCommon: */
194 bool has_logfile;
195 char *logfile;
196 bool has_logappend;
197 bool logappend;
198 /* Own members: */
199 bool has_in;
200 char *in;
201 char *out;
202 bool has_append;
203 bool append;
204};
205
206static inline ChardevCommon *qapi_ChardevFile_base(const ChardevFile *obj)
207{
208 return (ChardevCommon *)obj;
209}
210
211void qapi_free_ChardevFile(ChardevFile *obj);
212
213struct ChardevHostdev {
214 /* Members inherited from ChardevCommon: */
215 bool has_logfile;
216 char *logfile;
217 bool has_logappend;
218 bool logappend;
219 /* Own members: */
220 char *device;
221};
222
223static inline ChardevCommon *qapi_ChardevHostdev_base(const ChardevHostdev *obj)
224{
225 return (ChardevCommon *)obj;
226}
227
228void qapi_free_ChardevHostdev(ChardevHostdev *obj);
229
230struct ChardevSocket {
231 /* Members inherited from ChardevCommon: */
232 bool has_logfile;
233 char *logfile;
234 bool has_logappend;
235 bool logappend;
236 /* Own members: */
237 SocketAddressLegacy *addr;
238 bool has_tls_creds;
239 char *tls_creds;
240 bool has_tls_authz;
241 char *tls_authz;
242 bool has_server;
243 bool server;
244 bool has_wait;
245 bool wait;
246 bool has_nodelay;
247 bool nodelay;
248 bool has_telnet;
249 bool telnet;
250 bool has_tn3270;
251 bool tn3270;
252 bool has_websocket;
253 bool websocket;
254 bool has_reconnect;
255 int64_t reconnect;
256};
257
258static inline ChardevCommon *qapi_ChardevSocket_base(const ChardevSocket *obj)
259{
260 return (ChardevCommon *)obj;
261}
262
263void qapi_free_ChardevSocket(ChardevSocket *obj);
264
265struct ChardevUdp {
266 /* Members inherited from ChardevCommon: */
267 bool has_logfile;
268 char *logfile;
269 bool has_logappend;
270 bool logappend;
271 /* Own members: */
272 SocketAddressLegacy *remote;
273 bool has_local;
274 SocketAddressLegacy *local;
275};
276
277static inline ChardevCommon *qapi_ChardevUdp_base(const ChardevUdp *obj)
278{
279 return (ChardevCommon *)obj;
280}
281
282void qapi_free_ChardevUdp(ChardevUdp *obj);
283
284struct ChardevMux {
285 /* Members inherited from ChardevCommon: */
286 bool has_logfile;
287 char *logfile;
288 bool has_logappend;
289 bool logappend;
290 /* Own members: */
291 char *chardev;
292};
293
294static inline ChardevCommon *qapi_ChardevMux_base(const ChardevMux *obj)
295{
296 return (ChardevCommon *)obj;
297}
298
299void qapi_free_ChardevMux(ChardevMux *obj);
300
301struct ChardevStdio {
302 /* Members inherited from ChardevCommon: */
303 bool has_logfile;
304 char *logfile;
305 bool has_logappend;
306 bool logappend;
307 /* Own members: */
308 bool has_signal;
309 bool signal;
310};
311
312static inline ChardevCommon *qapi_ChardevStdio_base(const ChardevStdio *obj)
313{
314 return (ChardevCommon *)obj;
315}
316
317void qapi_free_ChardevStdio(ChardevStdio *obj);
318
319#if defined(CONFIG_SPICE)
320struct ChardevSpiceChannel {
321 /* Members inherited from ChardevCommon: */
322 bool has_logfile;
323 char *logfile;
324 bool has_logappend;
325 bool logappend;
326 /* Own members: */
327 char *type;
328};
329#endif /* defined(CONFIG_SPICE) */
330
331#if defined(CONFIG_SPICE)
332static inline ChardevCommon *qapi_ChardevSpiceChannel_base(const ChardevSpiceChannel *obj)
333{
334 return (ChardevCommon *)obj;
335}
336
337void qapi_free_ChardevSpiceChannel(ChardevSpiceChannel *obj);
338#endif /* defined(CONFIG_SPICE) */
339
340#if defined(CONFIG_SPICE)
341struct ChardevSpicePort {
342 /* Members inherited from ChardevCommon: */
343 bool has_logfile;
344 char *logfile;
345 bool has_logappend;
346 bool logappend;
347 /* Own members: */
348 char *fqdn;
349};
350#endif /* defined(CONFIG_SPICE) */
351
352#if defined(CONFIG_SPICE)
353static inline ChardevCommon *qapi_ChardevSpicePort_base(const ChardevSpicePort *obj)
354{
355 return (ChardevCommon *)obj;
356}
357
358void qapi_free_ChardevSpicePort(ChardevSpicePort *obj);
359#endif /* defined(CONFIG_SPICE) */
360
361struct ChardevVC {
362 /* Members inherited from ChardevCommon: */
363 bool has_logfile;
364 char *logfile;
365 bool has_logappend;
366 bool logappend;
367 /* Own members: */
368 bool has_width;
369 int64_t width;
370 bool has_height;
371 int64_t height;
372 bool has_cols;
373 int64_t cols;
374 bool has_rows;
375 int64_t rows;
376};
377
378static inline ChardevCommon *qapi_ChardevVC_base(const ChardevVC *obj)
379{
380 return (ChardevCommon *)obj;
381}
382
383void qapi_free_ChardevVC(ChardevVC *obj);
384
385struct ChardevRingbuf {
386 /* Members inherited from ChardevCommon: */
387 bool has_logfile;
388 char *logfile;
389 bool has_logappend;
390 bool logappend;
391 /* Own members: */
392 bool has_size;
393 int64_t size;
394};
395
396static inline ChardevCommon *qapi_ChardevRingbuf_base(const ChardevRingbuf *obj)
397{
398 return (ChardevCommon *)obj;
399}
400
401void qapi_free_ChardevRingbuf(ChardevRingbuf *obj);
402
403struct q_obj_ChardevFile_wrapper {
404 ChardevFile *data;
405};
406
407struct q_obj_ChardevHostdev_wrapper {
408 ChardevHostdev *data;
409};
410
411struct q_obj_ChardevSocket_wrapper {
412 ChardevSocket *data;
413};
414
415struct q_obj_ChardevUdp_wrapper {
416 ChardevUdp *data;
417};
418
419struct q_obj_ChardevCommon_wrapper {
420 ChardevCommon *data;
421};
422
423struct q_obj_ChardevMux_wrapper {
424 ChardevMux *data;
425};
426
427struct q_obj_ChardevStdio_wrapper {
428 ChardevStdio *data;
429};
430
431#if defined(CONFIG_SPICE)
432struct q_obj_ChardevSpiceChannel_wrapper {
433 ChardevSpiceChannel *data;
434};
435#endif /* defined(CONFIG_SPICE) */
436
437#if defined(CONFIG_SPICE)
438struct q_obj_ChardevSpicePort_wrapper {
439 ChardevSpicePort *data;
440};
441#endif /* defined(CONFIG_SPICE) */
442
443struct q_obj_ChardevVC_wrapper {
444 ChardevVC *data;
445};
446
447struct q_obj_ChardevRingbuf_wrapper {
448 ChardevRingbuf *data;
449};
450
451struct ChardevBackend {
452 ChardevBackendKind type;
453 union { /* union tag is @type */
454 q_obj_ChardevFile_wrapper file;
455 q_obj_ChardevHostdev_wrapper serial;
456 q_obj_ChardevHostdev_wrapper parallel;
457 q_obj_ChardevHostdev_wrapper pipe;
458 q_obj_ChardevSocket_wrapper socket;
459 q_obj_ChardevUdp_wrapper udp;
460 q_obj_ChardevCommon_wrapper pty;
461 q_obj_ChardevCommon_wrapper null;
462 q_obj_ChardevMux_wrapper mux;
463 q_obj_ChardevCommon_wrapper msmouse;
464 q_obj_ChardevCommon_wrapper wctablet;
465 q_obj_ChardevCommon_wrapper braille;
466 q_obj_ChardevCommon_wrapper testdev;
467 q_obj_ChardevStdio_wrapper stdio;
468 q_obj_ChardevCommon_wrapper console;
469#if defined(CONFIG_SPICE)
470 q_obj_ChardevSpiceChannel_wrapper spicevmc;
471#endif /* defined(CONFIG_SPICE) */
472#if defined(CONFIG_SPICE)
473 q_obj_ChardevSpicePort_wrapper spiceport;
474#endif /* defined(CONFIG_SPICE) */
475 q_obj_ChardevVC_wrapper vc;
476 q_obj_ChardevRingbuf_wrapper ringbuf;
477 q_obj_ChardevRingbuf_wrapper memory;
478 } u;
479};
480
481void qapi_free_ChardevBackend(ChardevBackend *obj);
482
483struct ChardevReturn {
484 bool has_pty;
485 char *pty;
486};
487
488void qapi_free_ChardevReturn(ChardevReturn *obj);
489
490struct q_obj_chardev_add_arg {
491 char *id;
492 ChardevBackend *backend;
493};
494
495struct q_obj_chardev_change_arg {
496 char *id;
497 ChardevBackend *backend;
498};
499
500struct q_obj_chardev_remove_arg {
501 char *id;
502};
503
504struct q_obj_chardev_send_break_arg {
505 char *id;
506};
507
508struct q_obj_VSERPORT_CHANGE_arg {
509 char *id;
510 bool open;
511};
512
513#endif /* QAPI_TYPES_CHAR_H */
514