Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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