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
14struct ynl_sock;
15
16extern const struct ynl_family ynl_netdev_family;
17
18/* Enums */
19const char *netdev_op_str(int op);
20const 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 */
25struct netdev_dev_get_req {
26	struct {
27		__u32 ifindex:1;
28	} _present;
29
30	__u32 ifindex;
31};
32
33static inline struct netdev_dev_get_req *netdev_dev_get_req_alloc(void)
34{
35	return calloc(1, sizeof(struct netdev_dev_get_req));
36}
37void netdev_dev_get_req_free(struct netdev_dev_get_req *req);
38
39static inline void
40netdev_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
46struct 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
58void netdev_dev_get_rsp_free(struct netdev_dev_get_rsp *rsp);
59
60/*
61 * Get / dump information about a netdev.
62 */
63struct netdev_dev_get_rsp *
64netdev_dev_get(struct ynl_sock *ys, struct netdev_dev_get_req *req);
65
66/* NETDEV_CMD_DEV_GET - dump */
67struct netdev_dev_get_list {
68	struct netdev_dev_get_list *next;
69	struct netdev_dev_get_rsp obj __attribute__ ((aligned (8)));
70};
71
72void netdev_dev_get_list_free(struct netdev_dev_get_list *rsp);
73
74struct netdev_dev_get_list *netdev_dev_get_dump(struct ynl_sock *ys);
75
76/* NETDEV_CMD_DEV_GET - notify */
77struct 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
85void netdev_dev_get_ntf_free(struct netdev_dev_get_ntf *rsp);
86
87#endif /* _LINUX_NETDEV_GEN_H */
88