xref: /openbmc/linux/tools/net/ynl/generated/fou-user.h (revision a149a3a1)
1d75fdfbcSJakub Kicinski /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2d75fdfbcSJakub Kicinski /* Do not edit directly, auto-generated from: */
3d75fdfbcSJakub Kicinski /*	Documentation/netlink/specs/fou.yaml */
4d75fdfbcSJakub Kicinski /* YNL-GEN user header */
5d75fdfbcSJakub Kicinski 
6d75fdfbcSJakub Kicinski #ifndef _LINUX_FOU_GEN_H
7d75fdfbcSJakub Kicinski #define _LINUX_FOU_GEN_H
8d75fdfbcSJakub Kicinski 
9d75fdfbcSJakub Kicinski #include <stdlib.h>
10d75fdfbcSJakub Kicinski #include <string.h>
11d75fdfbcSJakub Kicinski #include <linux/types.h>
12d75fdfbcSJakub Kicinski #include <linux/fou.h>
13d75fdfbcSJakub Kicinski 
14d75fdfbcSJakub Kicinski struct ynl_sock;
15d75fdfbcSJakub Kicinski 
16d75fdfbcSJakub Kicinski extern const struct ynl_family ynl_fou_family;
17d75fdfbcSJakub Kicinski 
18d75fdfbcSJakub Kicinski /* Enums */
19d75fdfbcSJakub Kicinski const char *fou_op_str(int op);
20d75fdfbcSJakub Kicinski const char *fou_encap_type_str(int value);
21d75fdfbcSJakub Kicinski 
22d75fdfbcSJakub Kicinski /* Common nested types */
23d75fdfbcSJakub Kicinski /* ============== FOU_CMD_ADD ============== */
24d75fdfbcSJakub Kicinski /* FOU_CMD_ADD - do */
25d75fdfbcSJakub Kicinski struct fou_add_req {
26d75fdfbcSJakub Kicinski 	struct {
27d75fdfbcSJakub Kicinski 		__u32 port:1;
28d75fdfbcSJakub Kicinski 		__u32 ipproto:1;
29d75fdfbcSJakub Kicinski 		__u32 type:1;
30d75fdfbcSJakub Kicinski 		__u32 remcsum_nopartial:1;
31d75fdfbcSJakub Kicinski 		__u32 local_v4:1;
32d75fdfbcSJakub Kicinski 		__u32 peer_v4:1;
33d75fdfbcSJakub Kicinski 		__u32 local_v6_len;
34d75fdfbcSJakub Kicinski 		__u32 peer_v6_len;
35d75fdfbcSJakub Kicinski 		__u32 peer_port:1;
36d75fdfbcSJakub Kicinski 		__u32 ifindex:1;
37d75fdfbcSJakub Kicinski 	} _present;
38d75fdfbcSJakub Kicinski 
39d75fdfbcSJakub Kicinski 	__u16 port /* big-endian */;
40d75fdfbcSJakub Kicinski 	__u8 ipproto;
41d75fdfbcSJakub Kicinski 	__u8 type;
42d75fdfbcSJakub Kicinski 	__u32 local_v4;
43d75fdfbcSJakub Kicinski 	__u32 peer_v4;
44d75fdfbcSJakub Kicinski 	void *local_v6;
45d75fdfbcSJakub Kicinski 	void *peer_v6;
46d75fdfbcSJakub Kicinski 	__u16 peer_port /* big-endian */;
47d75fdfbcSJakub Kicinski 	__s32 ifindex;
48d75fdfbcSJakub Kicinski };
49d75fdfbcSJakub Kicinski 
fou_add_req_alloc(void)50d75fdfbcSJakub Kicinski static inline struct fou_add_req *fou_add_req_alloc(void)
51d75fdfbcSJakub Kicinski {
52d75fdfbcSJakub Kicinski 	return calloc(1, sizeof(struct fou_add_req));
53d75fdfbcSJakub Kicinski }
54d75fdfbcSJakub Kicinski void fou_add_req_free(struct fou_add_req *req);
55d75fdfbcSJakub Kicinski 
56d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_port(struct fou_add_req * req,__u16 port)57d75fdfbcSJakub Kicinski fou_add_req_set_port(struct fou_add_req *req, __u16 port /* big-endian */)
58d75fdfbcSJakub Kicinski {
59d75fdfbcSJakub Kicinski 	req->_present.port = 1;
60d75fdfbcSJakub Kicinski 	req->port = port;
61d75fdfbcSJakub Kicinski }
62d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_ipproto(struct fou_add_req * req,__u8 ipproto)63d75fdfbcSJakub Kicinski fou_add_req_set_ipproto(struct fou_add_req *req, __u8 ipproto)
64d75fdfbcSJakub Kicinski {
65d75fdfbcSJakub Kicinski 	req->_present.ipproto = 1;
66d75fdfbcSJakub Kicinski 	req->ipproto = ipproto;
67d75fdfbcSJakub Kicinski }
fou_add_req_set_type(struct fou_add_req * req,__u8 type)68d75fdfbcSJakub Kicinski static inline void fou_add_req_set_type(struct fou_add_req *req, __u8 type)
69d75fdfbcSJakub Kicinski {
70d75fdfbcSJakub Kicinski 	req->_present.type = 1;
71d75fdfbcSJakub Kicinski 	req->type = type;
72d75fdfbcSJakub Kicinski }
fou_add_req_set_remcsum_nopartial(struct fou_add_req * req)73d75fdfbcSJakub Kicinski static inline void fou_add_req_set_remcsum_nopartial(struct fou_add_req *req)
74d75fdfbcSJakub Kicinski {
75d75fdfbcSJakub Kicinski 	req->_present.remcsum_nopartial = 1;
76d75fdfbcSJakub Kicinski }
77d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_local_v4(struct fou_add_req * req,__u32 local_v4)78d75fdfbcSJakub Kicinski fou_add_req_set_local_v4(struct fou_add_req *req, __u32 local_v4)
79d75fdfbcSJakub Kicinski {
80d75fdfbcSJakub Kicinski 	req->_present.local_v4 = 1;
81d75fdfbcSJakub Kicinski 	req->local_v4 = local_v4;
82d75fdfbcSJakub Kicinski }
83d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_peer_v4(struct fou_add_req * req,__u32 peer_v4)84d75fdfbcSJakub Kicinski fou_add_req_set_peer_v4(struct fou_add_req *req, __u32 peer_v4)
85d75fdfbcSJakub Kicinski {
86d75fdfbcSJakub Kicinski 	req->_present.peer_v4 = 1;
87d75fdfbcSJakub Kicinski 	req->peer_v4 = peer_v4;
88d75fdfbcSJakub Kicinski }
89d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_local_v6(struct fou_add_req * req,const void * local_v6,size_t len)90d75fdfbcSJakub Kicinski fou_add_req_set_local_v6(struct fou_add_req *req, const void *local_v6,
91d75fdfbcSJakub Kicinski 			 size_t len)
92d75fdfbcSJakub Kicinski {
93d75fdfbcSJakub Kicinski 	free(req->local_v6);
94*a149a3a1SJakub Kicinski 	req->_present.local_v6_len = len;
95d75fdfbcSJakub Kicinski 	req->local_v6 = malloc(req->_present.local_v6_len);
96d75fdfbcSJakub Kicinski 	memcpy(req->local_v6, local_v6, req->_present.local_v6_len);
97d75fdfbcSJakub Kicinski }
98d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_peer_v6(struct fou_add_req * req,const void * peer_v6,size_t len)99d75fdfbcSJakub Kicinski fou_add_req_set_peer_v6(struct fou_add_req *req, const void *peer_v6,
100d75fdfbcSJakub Kicinski 			size_t len)
101d75fdfbcSJakub Kicinski {
102d75fdfbcSJakub Kicinski 	free(req->peer_v6);
103*a149a3a1SJakub Kicinski 	req->_present.peer_v6_len = len;
104d75fdfbcSJakub Kicinski 	req->peer_v6 = malloc(req->_present.peer_v6_len);
105d75fdfbcSJakub Kicinski 	memcpy(req->peer_v6, peer_v6, req->_present.peer_v6_len);
106d75fdfbcSJakub Kicinski }
107d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_peer_port(struct fou_add_req * req,__u16 peer_port)108d75fdfbcSJakub Kicinski fou_add_req_set_peer_port(struct fou_add_req *req,
109d75fdfbcSJakub Kicinski 			  __u16 peer_port /* big-endian */)
110d75fdfbcSJakub Kicinski {
111d75fdfbcSJakub Kicinski 	req->_present.peer_port = 1;
112d75fdfbcSJakub Kicinski 	req->peer_port = peer_port;
113d75fdfbcSJakub Kicinski }
114d75fdfbcSJakub Kicinski static inline void
fou_add_req_set_ifindex(struct fou_add_req * req,__s32 ifindex)115d75fdfbcSJakub Kicinski fou_add_req_set_ifindex(struct fou_add_req *req, __s32 ifindex)
116d75fdfbcSJakub Kicinski {
117d75fdfbcSJakub Kicinski 	req->_present.ifindex = 1;
118d75fdfbcSJakub Kicinski 	req->ifindex = ifindex;
119d75fdfbcSJakub Kicinski }
120d75fdfbcSJakub Kicinski 
121d75fdfbcSJakub Kicinski /*
122d75fdfbcSJakub Kicinski  * Add port.
123d75fdfbcSJakub Kicinski  */
124d75fdfbcSJakub Kicinski int fou_add(struct ynl_sock *ys, struct fou_add_req *req);
125d75fdfbcSJakub Kicinski 
126d75fdfbcSJakub Kicinski /* ============== FOU_CMD_DEL ============== */
127d75fdfbcSJakub Kicinski /* FOU_CMD_DEL - do */
128d75fdfbcSJakub Kicinski struct fou_del_req {
129d75fdfbcSJakub Kicinski 	struct {
130d75fdfbcSJakub Kicinski 		__u32 af:1;
131d75fdfbcSJakub Kicinski 		__u32 ifindex:1;
132d75fdfbcSJakub Kicinski 		__u32 port:1;
133d75fdfbcSJakub Kicinski 		__u32 peer_port:1;
134d75fdfbcSJakub Kicinski 		__u32 local_v4:1;
135d75fdfbcSJakub Kicinski 		__u32 peer_v4:1;
136d75fdfbcSJakub Kicinski 		__u32 local_v6_len;
137d75fdfbcSJakub Kicinski 		__u32 peer_v6_len;
138d75fdfbcSJakub Kicinski 	} _present;
139d75fdfbcSJakub Kicinski 
140d75fdfbcSJakub Kicinski 	__u8 af;
141d75fdfbcSJakub Kicinski 	__s32 ifindex;
142d75fdfbcSJakub Kicinski 	__u16 port /* big-endian */;
143d75fdfbcSJakub Kicinski 	__u16 peer_port /* big-endian */;
144d75fdfbcSJakub Kicinski 	__u32 local_v4;
145d75fdfbcSJakub Kicinski 	__u32 peer_v4;
146d75fdfbcSJakub Kicinski 	void *local_v6;
147d75fdfbcSJakub Kicinski 	void *peer_v6;
148d75fdfbcSJakub Kicinski };
149d75fdfbcSJakub Kicinski 
fou_del_req_alloc(void)150d75fdfbcSJakub Kicinski static inline struct fou_del_req *fou_del_req_alloc(void)
151d75fdfbcSJakub Kicinski {
152d75fdfbcSJakub Kicinski 	return calloc(1, sizeof(struct fou_del_req));
153d75fdfbcSJakub Kicinski }
154d75fdfbcSJakub Kicinski void fou_del_req_free(struct fou_del_req *req);
155d75fdfbcSJakub Kicinski 
fou_del_req_set_af(struct fou_del_req * req,__u8 af)156d75fdfbcSJakub Kicinski static inline void fou_del_req_set_af(struct fou_del_req *req, __u8 af)
157d75fdfbcSJakub Kicinski {
158d75fdfbcSJakub Kicinski 	req->_present.af = 1;
159d75fdfbcSJakub Kicinski 	req->af = af;
160d75fdfbcSJakub Kicinski }
161d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_ifindex(struct fou_del_req * req,__s32 ifindex)162d75fdfbcSJakub Kicinski fou_del_req_set_ifindex(struct fou_del_req *req, __s32 ifindex)
163d75fdfbcSJakub Kicinski {
164d75fdfbcSJakub Kicinski 	req->_present.ifindex = 1;
165d75fdfbcSJakub Kicinski 	req->ifindex = ifindex;
166d75fdfbcSJakub Kicinski }
167d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_port(struct fou_del_req * req,__u16 port)168d75fdfbcSJakub Kicinski fou_del_req_set_port(struct fou_del_req *req, __u16 port /* big-endian */)
169d75fdfbcSJakub Kicinski {
170d75fdfbcSJakub Kicinski 	req->_present.port = 1;
171d75fdfbcSJakub Kicinski 	req->port = port;
172d75fdfbcSJakub Kicinski }
173d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_peer_port(struct fou_del_req * req,__u16 peer_port)174d75fdfbcSJakub Kicinski fou_del_req_set_peer_port(struct fou_del_req *req,
175d75fdfbcSJakub Kicinski 			  __u16 peer_port /* big-endian */)
176d75fdfbcSJakub Kicinski {
177d75fdfbcSJakub Kicinski 	req->_present.peer_port = 1;
178d75fdfbcSJakub Kicinski 	req->peer_port = peer_port;
179d75fdfbcSJakub Kicinski }
180d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_local_v4(struct fou_del_req * req,__u32 local_v4)181d75fdfbcSJakub Kicinski fou_del_req_set_local_v4(struct fou_del_req *req, __u32 local_v4)
182d75fdfbcSJakub Kicinski {
183d75fdfbcSJakub Kicinski 	req->_present.local_v4 = 1;
184d75fdfbcSJakub Kicinski 	req->local_v4 = local_v4;
185d75fdfbcSJakub Kicinski }
186d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_peer_v4(struct fou_del_req * req,__u32 peer_v4)187d75fdfbcSJakub Kicinski fou_del_req_set_peer_v4(struct fou_del_req *req, __u32 peer_v4)
188d75fdfbcSJakub Kicinski {
189d75fdfbcSJakub Kicinski 	req->_present.peer_v4 = 1;
190d75fdfbcSJakub Kicinski 	req->peer_v4 = peer_v4;
191d75fdfbcSJakub Kicinski }
192d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_local_v6(struct fou_del_req * req,const void * local_v6,size_t len)193d75fdfbcSJakub Kicinski fou_del_req_set_local_v6(struct fou_del_req *req, const void *local_v6,
194d75fdfbcSJakub Kicinski 			 size_t len)
195d75fdfbcSJakub Kicinski {
196d75fdfbcSJakub Kicinski 	free(req->local_v6);
197*a149a3a1SJakub Kicinski 	req->_present.local_v6_len = len;
198d75fdfbcSJakub Kicinski 	req->local_v6 = malloc(req->_present.local_v6_len);
199d75fdfbcSJakub Kicinski 	memcpy(req->local_v6, local_v6, req->_present.local_v6_len);
200d75fdfbcSJakub Kicinski }
201d75fdfbcSJakub Kicinski static inline void
fou_del_req_set_peer_v6(struct fou_del_req * req,const void * peer_v6,size_t len)202d75fdfbcSJakub Kicinski fou_del_req_set_peer_v6(struct fou_del_req *req, const void *peer_v6,
203d75fdfbcSJakub Kicinski 			size_t len)
204d75fdfbcSJakub Kicinski {
205d75fdfbcSJakub Kicinski 	free(req->peer_v6);
206*a149a3a1SJakub Kicinski 	req->_present.peer_v6_len = len;
207d75fdfbcSJakub Kicinski 	req->peer_v6 = malloc(req->_present.peer_v6_len);
208d75fdfbcSJakub Kicinski 	memcpy(req->peer_v6, peer_v6, req->_present.peer_v6_len);
209d75fdfbcSJakub Kicinski }
210d75fdfbcSJakub Kicinski 
211d75fdfbcSJakub Kicinski /*
212d75fdfbcSJakub Kicinski  * Delete port.
213d75fdfbcSJakub Kicinski  */
214d75fdfbcSJakub Kicinski int fou_del(struct ynl_sock *ys, struct fou_del_req *req);
215d75fdfbcSJakub Kicinski 
216d75fdfbcSJakub Kicinski /* ============== FOU_CMD_GET ============== */
217d75fdfbcSJakub Kicinski /* FOU_CMD_GET - do */
218d75fdfbcSJakub Kicinski struct fou_get_req {
219d75fdfbcSJakub Kicinski 	struct {
220d75fdfbcSJakub Kicinski 		__u32 af:1;
221d75fdfbcSJakub Kicinski 		__u32 ifindex:1;
222d75fdfbcSJakub Kicinski 		__u32 port:1;
223d75fdfbcSJakub Kicinski 		__u32 peer_port:1;
224d75fdfbcSJakub Kicinski 		__u32 local_v4:1;
225d75fdfbcSJakub Kicinski 		__u32 peer_v4:1;
226d75fdfbcSJakub Kicinski 		__u32 local_v6_len;
227d75fdfbcSJakub Kicinski 		__u32 peer_v6_len;
228d75fdfbcSJakub Kicinski 	} _present;
229d75fdfbcSJakub Kicinski 
230d75fdfbcSJakub Kicinski 	__u8 af;
231d75fdfbcSJakub Kicinski 	__s32 ifindex;
232d75fdfbcSJakub Kicinski 	__u16 port /* big-endian */;
233d75fdfbcSJakub Kicinski 	__u16 peer_port /* big-endian */;
234d75fdfbcSJakub Kicinski 	__u32 local_v4;
235d75fdfbcSJakub Kicinski 	__u32 peer_v4;
236d75fdfbcSJakub Kicinski 	void *local_v6;
237d75fdfbcSJakub Kicinski 	void *peer_v6;
238d75fdfbcSJakub Kicinski };
239d75fdfbcSJakub Kicinski 
fou_get_req_alloc(void)240d75fdfbcSJakub Kicinski static inline struct fou_get_req *fou_get_req_alloc(void)
241d75fdfbcSJakub Kicinski {
242d75fdfbcSJakub Kicinski 	return calloc(1, sizeof(struct fou_get_req));
243d75fdfbcSJakub Kicinski }
244d75fdfbcSJakub Kicinski void fou_get_req_free(struct fou_get_req *req);
245d75fdfbcSJakub Kicinski 
fou_get_req_set_af(struct fou_get_req * req,__u8 af)246d75fdfbcSJakub Kicinski static inline void fou_get_req_set_af(struct fou_get_req *req, __u8 af)
247d75fdfbcSJakub Kicinski {
248d75fdfbcSJakub Kicinski 	req->_present.af = 1;
249d75fdfbcSJakub Kicinski 	req->af = af;
250d75fdfbcSJakub Kicinski }
251d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_ifindex(struct fou_get_req * req,__s32 ifindex)252d75fdfbcSJakub Kicinski fou_get_req_set_ifindex(struct fou_get_req *req, __s32 ifindex)
253d75fdfbcSJakub Kicinski {
254d75fdfbcSJakub Kicinski 	req->_present.ifindex = 1;
255d75fdfbcSJakub Kicinski 	req->ifindex = ifindex;
256d75fdfbcSJakub Kicinski }
257d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_port(struct fou_get_req * req,__u16 port)258d75fdfbcSJakub Kicinski fou_get_req_set_port(struct fou_get_req *req, __u16 port /* big-endian */)
259d75fdfbcSJakub Kicinski {
260d75fdfbcSJakub Kicinski 	req->_present.port = 1;
261d75fdfbcSJakub Kicinski 	req->port = port;
262d75fdfbcSJakub Kicinski }
263d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_peer_port(struct fou_get_req * req,__u16 peer_port)264d75fdfbcSJakub Kicinski fou_get_req_set_peer_port(struct fou_get_req *req,
265d75fdfbcSJakub Kicinski 			  __u16 peer_port /* big-endian */)
266d75fdfbcSJakub Kicinski {
267d75fdfbcSJakub Kicinski 	req->_present.peer_port = 1;
268d75fdfbcSJakub Kicinski 	req->peer_port = peer_port;
269d75fdfbcSJakub Kicinski }
270d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_local_v4(struct fou_get_req * req,__u32 local_v4)271d75fdfbcSJakub Kicinski fou_get_req_set_local_v4(struct fou_get_req *req, __u32 local_v4)
272d75fdfbcSJakub Kicinski {
273d75fdfbcSJakub Kicinski 	req->_present.local_v4 = 1;
274d75fdfbcSJakub Kicinski 	req->local_v4 = local_v4;
275d75fdfbcSJakub Kicinski }
276d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_peer_v4(struct fou_get_req * req,__u32 peer_v4)277d75fdfbcSJakub Kicinski fou_get_req_set_peer_v4(struct fou_get_req *req, __u32 peer_v4)
278d75fdfbcSJakub Kicinski {
279d75fdfbcSJakub Kicinski 	req->_present.peer_v4 = 1;
280d75fdfbcSJakub Kicinski 	req->peer_v4 = peer_v4;
281d75fdfbcSJakub Kicinski }
282d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_local_v6(struct fou_get_req * req,const void * local_v6,size_t len)283d75fdfbcSJakub Kicinski fou_get_req_set_local_v6(struct fou_get_req *req, const void *local_v6,
284d75fdfbcSJakub Kicinski 			 size_t len)
285d75fdfbcSJakub Kicinski {
286d75fdfbcSJakub Kicinski 	free(req->local_v6);
287*a149a3a1SJakub Kicinski 	req->_present.local_v6_len = len;
288d75fdfbcSJakub Kicinski 	req->local_v6 = malloc(req->_present.local_v6_len);
289d75fdfbcSJakub Kicinski 	memcpy(req->local_v6, local_v6, req->_present.local_v6_len);
290d75fdfbcSJakub Kicinski }
291d75fdfbcSJakub Kicinski static inline void
fou_get_req_set_peer_v6(struct fou_get_req * req,const void * peer_v6,size_t len)292d75fdfbcSJakub Kicinski fou_get_req_set_peer_v6(struct fou_get_req *req, const void *peer_v6,
293d75fdfbcSJakub Kicinski 			size_t len)
294d75fdfbcSJakub Kicinski {
295d75fdfbcSJakub Kicinski 	free(req->peer_v6);
296*a149a3a1SJakub Kicinski 	req->_present.peer_v6_len = len;
297d75fdfbcSJakub Kicinski 	req->peer_v6 = malloc(req->_present.peer_v6_len);
298d75fdfbcSJakub Kicinski 	memcpy(req->peer_v6, peer_v6, req->_present.peer_v6_len);
299d75fdfbcSJakub Kicinski }
300d75fdfbcSJakub Kicinski 
301d75fdfbcSJakub Kicinski struct fou_get_rsp {
302d75fdfbcSJakub Kicinski 	struct {
303d75fdfbcSJakub Kicinski 		__u32 port:1;
304d75fdfbcSJakub Kicinski 		__u32 ipproto:1;
305d75fdfbcSJakub Kicinski 		__u32 type:1;
306d75fdfbcSJakub Kicinski 		__u32 remcsum_nopartial:1;
307d75fdfbcSJakub Kicinski 		__u32 local_v4:1;
308d75fdfbcSJakub Kicinski 		__u32 peer_v4:1;
309d75fdfbcSJakub Kicinski 		__u32 local_v6_len;
310d75fdfbcSJakub Kicinski 		__u32 peer_v6_len;
311d75fdfbcSJakub Kicinski 		__u32 peer_port:1;
312d75fdfbcSJakub Kicinski 		__u32 ifindex:1;
313d75fdfbcSJakub Kicinski 	} _present;
314d75fdfbcSJakub Kicinski 
315d75fdfbcSJakub Kicinski 	__u16 port /* big-endian */;
316d75fdfbcSJakub Kicinski 	__u8 ipproto;
317d75fdfbcSJakub Kicinski 	__u8 type;
318d75fdfbcSJakub Kicinski 	__u32 local_v4;
319d75fdfbcSJakub Kicinski 	__u32 peer_v4;
320d75fdfbcSJakub Kicinski 	void *local_v6;
321d75fdfbcSJakub Kicinski 	void *peer_v6;
322d75fdfbcSJakub Kicinski 	__u16 peer_port /* big-endian */;
323d75fdfbcSJakub Kicinski 	__s32 ifindex;
324d75fdfbcSJakub Kicinski };
325d75fdfbcSJakub Kicinski 
326d75fdfbcSJakub Kicinski void fou_get_rsp_free(struct fou_get_rsp *rsp);
327d75fdfbcSJakub Kicinski 
328d75fdfbcSJakub Kicinski /*
329d75fdfbcSJakub Kicinski  * Get tunnel info.
330d75fdfbcSJakub Kicinski  */
331d75fdfbcSJakub Kicinski struct fou_get_rsp *fou_get(struct ynl_sock *ys, struct fou_get_req *req);
332d75fdfbcSJakub Kicinski 
333d75fdfbcSJakub Kicinski /* FOU_CMD_GET - dump */
334d75fdfbcSJakub Kicinski struct fou_get_list {
335d75fdfbcSJakub Kicinski 	struct fou_get_list *next;
336d75fdfbcSJakub Kicinski 	struct fou_get_rsp obj __attribute__ ((aligned (8)));
337d75fdfbcSJakub Kicinski };
338d75fdfbcSJakub Kicinski 
339d75fdfbcSJakub Kicinski void fou_get_list_free(struct fou_get_list *rsp);
340d75fdfbcSJakub Kicinski 
341d75fdfbcSJakub Kicinski struct fou_get_list *fou_get_dump(struct ynl_sock *ys);
342d75fdfbcSJakub Kicinski 
343d75fdfbcSJakub Kicinski #endif /* _LINUX_FOU_GEN_H */
344