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/netdev.yaml */
4 /* YNL-GEN user header */
5 
6 #ifndef _LINUX_NETDEV_GEN_H
7 #define _LINUX_NETDEV_GEN_H
8 
9 #include <stdlib.h>
10 #include <string.h>
11 #include <linux/types.h>
12 #include <linux/netdev.h>
13 
14 struct ynl_sock;
15 
16 extern const struct ynl_family ynl_netdev_family;
17 
18 /* Enums */
19 const char *netdev_op_str(int op);
20 const char *netdev_xdp_act_str(enum netdev_xdp_act value);
21 
22 /* Common nested types */
23 /* ============== NETDEV_CMD_DEV_GET ============== */
24 /* NETDEV_CMD_DEV_GET - do */
25 struct netdev_dev_get_req {
26 	struct {
27 		__u32 ifindex:1;
28 	} _present;
29 
30 	__u32 ifindex;
31 };
32 
33 static inline struct netdev_dev_get_req *netdev_dev_get_req_alloc(void)
34 {
35 	return calloc(1, sizeof(struct netdev_dev_get_req));
36 }
37 void netdev_dev_get_req_free(struct netdev_dev_get_req *req);
38 
39 static inline void
40 netdev_dev_get_req_set_ifindex(struct netdev_dev_get_req *req, __u32 ifindex)
41 {
42 	req->_present.ifindex = 1;
43 	req->ifindex = ifindex;
44 }
45 
46 struct netdev_dev_get_rsp {
47 	struct {
48 		__u32 ifindex:1;
49 		__u32 xdp_features:1;
50 		__u32 xdp_zc_max_segs:1;
51 	} _present;
52 
53 	__u32 ifindex;
54 	__u64 xdp_features;
55 	__u32 xdp_zc_max_segs;
56 };
57 
58 void netdev_dev_get_rsp_free(struct netdev_dev_get_rsp *rsp);
59 
60 /*
61  * Get / dump information about a netdev.
62  */
63 struct netdev_dev_get_rsp *
64 netdev_dev_get(struct ynl_sock *ys, struct netdev_dev_get_req *req);
65 
66 /* NETDEV_CMD_DEV_GET - dump */
67 struct netdev_dev_get_list {
68 	struct netdev_dev_get_list *next;
69 	struct netdev_dev_get_rsp obj __attribute__ ((aligned (8)));
70 };
71 
72 void netdev_dev_get_list_free(struct netdev_dev_get_list *rsp);
73 
74 struct netdev_dev_get_list *netdev_dev_get_dump(struct ynl_sock *ys);
75 
76 /* NETDEV_CMD_DEV_GET - notify */
77 struct netdev_dev_get_ntf {
78 	__u16 family;
79 	__u8 cmd;
80 	struct ynl_ntf_base_type *next;
81 	void (*free)(struct netdev_dev_get_ntf *ntf);
82 	struct netdev_dev_get_rsp obj __attribute__ ((aligned (8)));
83 };
84 
85 void netdev_dev_get_ntf_free(struct netdev_dev_get_ntf *rsp);
86 
87 #endif /* _LINUX_NETDEV_GEN_H */
88