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 | |
19 | typedef 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 | |
31 | extern const QEnumLookup NetworkAddressFamily_lookup; |
32 | |
33 | typedef struct InetSocketAddressBase InetSocketAddressBase; |
34 | |
35 | typedef struct InetSocketAddress InetSocketAddress; |
36 | |
37 | typedef struct UnixSocketAddress UnixSocketAddress; |
38 | |
39 | typedef struct VsockSocketAddress VsockSocketAddress; |
40 | |
41 | typedef struct q_obj_InetSocketAddress_wrapper q_obj_InetSocketAddress_wrapper; |
42 | |
43 | typedef struct q_obj_UnixSocketAddress_wrapper q_obj_UnixSocketAddress_wrapper; |
44 | |
45 | typedef struct q_obj_VsockSocketAddress_wrapper q_obj_VsockSocketAddress_wrapper; |
46 | |
47 | typedef struct q_obj_String_wrapper q_obj_String_wrapper; |
48 | |
49 | typedef 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 | |
60 | extern const QEnumLookup SocketAddressLegacyKind_lookup; |
61 | |
62 | typedef struct SocketAddressLegacy SocketAddressLegacy; |
63 | |
64 | typedef 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 | |
75 | extern const QEnumLookup SocketAddressType_lookup; |
76 | |
77 | typedef struct q_obj_SocketAddress_base q_obj_SocketAddress_base; |
78 | |
79 | typedef struct SocketAddress SocketAddress; |
80 | |
81 | typedef struct SocketAddressList SocketAddressList; |
82 | |
83 | typedef struct InetSocketAddressBaseList InetSocketAddressBaseList; |
84 | |
85 | struct InetSocketAddressBase { |
86 | char *host; |
87 | char *port; |
88 | }; |
89 | |
90 | void qapi_free_InetSocketAddressBase(InetSocketAddressBase *obj); |
91 | |
92 | struct 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 | |
109 | static inline InetSocketAddressBase *qapi_InetSocketAddress_base(const InetSocketAddress *obj) |
110 | { |
111 | return (InetSocketAddressBase *)obj; |
112 | } |
113 | |
114 | void qapi_free_InetSocketAddress(InetSocketAddress *obj); |
115 | |
116 | struct UnixSocketAddress { |
117 | char *path; |
118 | }; |
119 | |
120 | void qapi_free_UnixSocketAddress(UnixSocketAddress *obj); |
121 | |
122 | struct VsockSocketAddress { |
123 | char *cid; |
124 | char *port; |
125 | }; |
126 | |
127 | void qapi_free_VsockSocketAddress(VsockSocketAddress *obj); |
128 | |
129 | struct q_obj_InetSocketAddress_wrapper { |
130 | InetSocketAddress *data; |
131 | }; |
132 | |
133 | struct q_obj_UnixSocketAddress_wrapper { |
134 | UnixSocketAddress *data; |
135 | }; |
136 | |
137 | struct q_obj_VsockSocketAddress_wrapper { |
138 | VsockSocketAddress *data; |
139 | }; |
140 | |
141 | struct q_obj_String_wrapper { |
142 | String *data; |
143 | }; |
144 | |
145 | struct 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 | |
155 | void qapi_free_SocketAddressLegacy(SocketAddressLegacy *obj); |
156 | |
157 | struct q_obj_SocketAddress_base { |
158 | SocketAddressType type; |
159 | }; |
160 | |
161 | struct 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 | |
171 | void qapi_free_SocketAddress(SocketAddress *obj); |
172 | |
173 | struct SocketAddressList { |
174 | SocketAddressList *next; |
175 | SocketAddress *value; |
176 | }; |
177 | |
178 | void qapi_free_SocketAddressList(SocketAddressList *obj); |
179 | |
180 | struct InetSocketAddressBaseList { |
181 | InetSocketAddressBaseList *next; |
182 | InetSocketAddressBase *value; |
183 | }; |
184 | |
185 | void qapi_free_InetSocketAddressBaseList(InetSocketAddressBaseList *obj); |
186 | |
187 | #endif /* QAPI_TYPES_SOCKETS_H */ |
188 | |