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_SOCKETS_H
14#define QAPI_TYPES_SOCKETS_H
15
16#include "qapi/qapi-builtin-types.h"
17#include "qapi-types-common.h"
18
19typedef enum NetworkAddressFamily {
20 NETWORK_ADDRESS_FAMILY_IPV4,
21 NETWORK_ADDRESS_FAMILY_IPV6,
22 NETWORK_ADDRESS_FAMILY_UNIX,
23 NETWORK_ADDRESS_FAMILY_VSOCK,
24 NETWORK_ADDRESS_FAMILY_UNKNOWN,
25 NETWORK_ADDRESS_FAMILY__MAX,
26} NetworkAddressFamily;
27
28#define NetworkAddressFamily_str(val) \
29 qapi_enum_lookup(&NetworkAddressFamily_lookup, (val))
30
31extern const QEnumLookup NetworkAddressFamily_lookup;
32
33typedef struct InetSocketAddressBase InetSocketAddressBase;
34
35typedef struct InetSocketAddress InetSocketAddress;
36
37typedef struct UnixSocketAddress UnixSocketAddress;
38
39typedef struct VsockSocketAddress VsockSocketAddress;
40
41typedef struct q_obj_InetSocketAddress_wrapper q_obj_InetSocketAddress_wrapper;
42
43typedef struct q_obj_UnixSocketAddress_wrapper q_obj_UnixSocketAddress_wrapper;
44
45typedef struct q_obj_VsockSocketAddress_wrapper q_obj_VsockSocketAddress_wrapper;
46
47typedef struct q_obj_String_wrapper q_obj_String_wrapper;
48
49typedef enum SocketAddressLegacyKind {
50 SOCKET_ADDRESS_LEGACY_KIND_INET,
51 SOCKET_ADDRESS_LEGACY_KIND_UNIX,
52 SOCKET_ADDRESS_LEGACY_KIND_VSOCK,
53 SOCKET_ADDRESS_LEGACY_KIND_FD,
54 SOCKET_ADDRESS_LEGACY_KIND__MAX,
55} SocketAddressLegacyKind;
56
57#define SocketAddressLegacyKind_str(val) \
58 qapi_enum_lookup(&SocketAddressLegacyKind_lookup, (val))
59
60extern const QEnumLookup SocketAddressLegacyKind_lookup;
61
62typedef struct SocketAddressLegacy SocketAddressLegacy;
63
64typedef enum SocketAddressType {
65 SOCKET_ADDRESS_TYPE_INET,
66 SOCKET_ADDRESS_TYPE_UNIX,
67 SOCKET_ADDRESS_TYPE_VSOCK,
68 SOCKET_ADDRESS_TYPE_FD,
69 SOCKET_ADDRESS_TYPE__MAX,
70} SocketAddressType;
71
72#define SocketAddressType_str(val) \
73 qapi_enum_lookup(&SocketAddressType_lookup, (val))
74
75extern const QEnumLookup SocketAddressType_lookup;
76
77typedef struct q_obj_SocketAddress_base q_obj_SocketAddress_base;
78
79typedef struct SocketAddress SocketAddress;
80
81typedef struct SocketAddressList SocketAddressList;
82
83typedef struct InetSocketAddressBaseList InetSocketAddressBaseList;
84
85struct InetSocketAddressBase {
86 char *host;
87 char *port;
88};
89
90void qapi_free_InetSocketAddressBase(InetSocketAddressBase *obj);
91
92struct InetSocketAddress {
93 /* Members inherited from InetSocketAddressBase: */
94 char *host;
95 char *port;
96 /* Own members: */
97 bool has_numeric;
98 bool numeric;
99 bool has_to;
100 uint16_t to;
101 bool has_ipv4;
102 bool ipv4;
103 bool has_ipv6;
104 bool ipv6;
105 bool has_keep_alive;
106 bool keep_alive;
107};
108
109static inline InetSocketAddressBase *qapi_InetSocketAddress_base(const InetSocketAddress *obj)
110{
111 return (InetSocketAddressBase *)obj;
112}
113
114void qapi_free_InetSocketAddress(InetSocketAddress *obj);
115
116struct UnixSocketAddress {
117 char *path;
118};
119
120void qapi_free_UnixSocketAddress(UnixSocketAddress *obj);
121
122struct VsockSocketAddress {
123 char *cid;
124 char *port;
125};
126
127void qapi_free_VsockSocketAddress(VsockSocketAddress *obj);
128
129struct q_obj_InetSocketAddress_wrapper {
130 InetSocketAddress *data;
131};
132
133struct q_obj_UnixSocketAddress_wrapper {
134 UnixSocketAddress *data;
135};
136
137struct q_obj_VsockSocketAddress_wrapper {
138 VsockSocketAddress *data;
139};
140
141struct q_obj_String_wrapper {
142 String *data;
143};
144
145struct SocketAddressLegacy {
146 SocketAddressLegacyKind type;
147 union { /* union tag is @type */
148 q_obj_InetSocketAddress_wrapper inet;
149 q_obj_UnixSocketAddress_wrapper q_unix;
150 q_obj_VsockSocketAddress_wrapper vsock;
151 q_obj_String_wrapper fd;
152 } u;
153};
154
155void qapi_free_SocketAddressLegacy(SocketAddressLegacy *obj);
156
157struct q_obj_SocketAddress_base {
158 SocketAddressType type;
159};
160
161struct SocketAddress {
162 SocketAddressType type;
163 union { /* union tag is @type */
164 InetSocketAddress inet;
165 UnixSocketAddress q_unix;
166 VsockSocketAddress vsock;
167 String fd;
168 } u;
169};
170
171void qapi_free_SocketAddress(SocketAddress *obj);
172
173struct SocketAddressList {
174 SocketAddressList *next;
175 SocketAddress *value;
176};
177
178void qapi_free_SocketAddressList(SocketAddressList *obj);
179
180struct InetSocketAddressBaseList {
181 InetSocketAddressBaseList *next;
182 InetSocketAddressBase *value;
183};
184
185void qapi_free_InetSocketAddressBaseList(InetSocketAddressBaseList *obj);
186
187#endif /* QAPI_TYPES_SOCKETS_H */
188