netlink: specs: devlink: add info-get dump op
[platform/kernel/linux-starfive.git] / tools / net / ynl / generated / devlink-user.h
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/devlink.yaml */
4 /* YNL-GEN user header */
5
6 #ifndef _LINUX_DEVLINK_GEN_H
7 #define _LINUX_DEVLINK_GEN_H
8
9 #include <stdlib.h>
10 #include <string.h>
11 #include <linux/types.h>
12 #include <linux/devlink.h>
13
14 struct ynl_sock;
15
16 extern const struct ynl_family ynl_devlink_family;
17
18 /* Enums */
19 const char *devlink_op_str(int op);
20
21 /* Common nested types */
22 struct devlink_dl_info_version {
23         struct {
24                 __u32 info_version_name_len;
25                 __u32 info_version_value_len;
26         } _present;
27
28         char *info_version_name;
29         char *info_version_value;
30 };
31
32 struct devlink_dl_reload_stats_entry {
33         struct {
34                 __u32 reload_stats_limit:1;
35                 __u32 reload_stats_value:1;
36         } _present;
37
38         __u8 reload_stats_limit;
39         __u32 reload_stats_value;
40 };
41
42 struct devlink_dl_reload_act_stats {
43         unsigned int n_reload_stats_entry;
44         struct devlink_dl_reload_stats_entry *reload_stats_entry;
45 };
46
47 struct devlink_dl_reload_act_info {
48         struct {
49                 __u32 reload_action:1;
50         } _present;
51
52         __u8 reload_action;
53         unsigned int n_reload_action_stats;
54         struct devlink_dl_reload_act_stats *reload_action_stats;
55 };
56
57 struct devlink_dl_reload_stats {
58         unsigned int n_reload_action_info;
59         struct devlink_dl_reload_act_info *reload_action_info;
60 };
61
62 struct devlink_dl_dev_stats {
63         struct {
64                 __u32 reload_stats:1;
65                 __u32 remote_reload_stats:1;
66         } _present;
67
68         struct devlink_dl_reload_stats reload_stats;
69         struct devlink_dl_reload_stats remote_reload_stats;
70 };
71
72 /* ============== DEVLINK_CMD_GET ============== */
73 /* DEVLINK_CMD_GET - do */
74 struct devlink_get_req {
75         struct {
76                 __u32 bus_name_len;
77                 __u32 dev_name_len;
78         } _present;
79
80         char *bus_name;
81         char *dev_name;
82 };
83
84 static inline struct devlink_get_req *devlink_get_req_alloc(void)
85 {
86         return calloc(1, sizeof(struct devlink_get_req));
87 }
88 void devlink_get_req_free(struct devlink_get_req *req);
89
90 static inline void
91 devlink_get_req_set_bus_name(struct devlink_get_req *req, const char *bus_name)
92 {
93         free(req->bus_name);
94         req->_present.bus_name_len = strlen(bus_name);
95         req->bus_name = malloc(req->_present.bus_name_len + 1);
96         memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
97         req->bus_name[req->_present.bus_name_len] = 0;
98 }
99 static inline void
100 devlink_get_req_set_dev_name(struct devlink_get_req *req, const char *dev_name)
101 {
102         free(req->dev_name);
103         req->_present.dev_name_len = strlen(dev_name);
104         req->dev_name = malloc(req->_present.dev_name_len + 1);
105         memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
106         req->dev_name[req->_present.dev_name_len] = 0;
107 }
108
109 struct devlink_get_rsp {
110         struct {
111                 __u32 bus_name_len;
112                 __u32 dev_name_len;
113                 __u32 reload_failed:1;
114                 __u32 reload_action:1;
115                 __u32 dev_stats:1;
116         } _present;
117
118         char *bus_name;
119         char *dev_name;
120         __u8 reload_failed;
121         __u8 reload_action;
122         struct devlink_dl_dev_stats dev_stats;
123 };
124
125 void devlink_get_rsp_free(struct devlink_get_rsp *rsp);
126
127 /*
128  * Get devlink instances.
129  */
130 struct devlink_get_rsp *
131 devlink_get(struct ynl_sock *ys, struct devlink_get_req *req);
132
133 /* DEVLINK_CMD_GET - dump */
134 struct devlink_get_list {
135         struct devlink_get_list *next;
136         struct devlink_get_rsp obj __attribute__ ((aligned (8)));
137 };
138
139 void devlink_get_list_free(struct devlink_get_list *rsp);
140
141 struct devlink_get_list *devlink_get_dump(struct ynl_sock *ys);
142
143 /* ============== DEVLINK_CMD_INFO_GET ============== */
144 /* DEVLINK_CMD_INFO_GET - do */
145 struct devlink_info_get_req {
146         struct {
147                 __u32 bus_name_len;
148                 __u32 dev_name_len;
149         } _present;
150
151         char *bus_name;
152         char *dev_name;
153 };
154
155 static inline struct devlink_info_get_req *devlink_info_get_req_alloc(void)
156 {
157         return calloc(1, sizeof(struct devlink_info_get_req));
158 }
159 void devlink_info_get_req_free(struct devlink_info_get_req *req);
160
161 static inline void
162 devlink_info_get_req_set_bus_name(struct devlink_info_get_req *req,
163                                   const char *bus_name)
164 {
165         free(req->bus_name);
166         req->_present.bus_name_len = strlen(bus_name);
167         req->bus_name = malloc(req->_present.bus_name_len + 1);
168         memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
169         req->bus_name[req->_present.bus_name_len] = 0;
170 }
171 static inline void
172 devlink_info_get_req_set_dev_name(struct devlink_info_get_req *req,
173                                   const char *dev_name)
174 {
175         free(req->dev_name);
176         req->_present.dev_name_len = strlen(dev_name);
177         req->dev_name = malloc(req->_present.dev_name_len + 1);
178         memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
179         req->dev_name[req->_present.dev_name_len] = 0;
180 }
181
182 struct devlink_info_get_rsp {
183         struct {
184                 __u32 bus_name_len;
185                 __u32 dev_name_len;
186                 __u32 info_driver_name_len;
187                 __u32 info_serial_number_len;
188         } _present;
189
190         char *bus_name;
191         char *dev_name;
192         char *info_driver_name;
193         char *info_serial_number;
194         unsigned int n_info_version_fixed;
195         struct devlink_dl_info_version *info_version_fixed;
196         unsigned int n_info_version_running;
197         struct devlink_dl_info_version *info_version_running;
198         unsigned int n_info_version_stored;
199         struct devlink_dl_info_version *info_version_stored;
200 };
201
202 void devlink_info_get_rsp_free(struct devlink_info_get_rsp *rsp);
203
204 /*
205  * Get device information, like driver name, hardware and firmware versions etc.
206  */
207 struct devlink_info_get_rsp *
208 devlink_info_get(struct ynl_sock *ys, struct devlink_info_get_req *req);
209
210 /* DEVLINK_CMD_INFO_GET - dump */
211 struct devlink_info_get_list {
212         struct devlink_info_get_list *next;
213         struct devlink_info_get_rsp obj __attribute__ ((aligned (8)));
214 };
215
216 void devlink_info_get_list_free(struct devlink_info_get_list *rsp);
217
218 struct devlink_info_get_list *devlink_info_get_dump(struct ynl_sock *ys);
219
220 #endif /* _LINUX_DEVLINK_GEN_H */