Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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
14struct ynl_sock;
15
16extern const struct ynl_family ynl_devlink_family;
17
18/* Enums */
19const char *devlink_op_str(int op);
20const char *devlink_sb_pool_type_str(enum devlink_sb_pool_type value);
21
22/* Common nested types */
23struct devlink_dl_info_version {
24 struct {
25 __u32 info_version_name_len;
26 __u32 info_version_value_len;
27 } _present;
28
29 char *info_version_name;
30 char *info_version_value;
31};
32
33struct devlink_dl_reload_stats_entry {
34 struct {
35 __u32 reload_stats_limit:1;
36 __u32 reload_stats_value:1;
37 } _present;
38
39 __u8 reload_stats_limit;
40 __u32 reload_stats_value;
41};
42
43struct devlink_dl_reload_act_stats {
44 unsigned int n_reload_stats_entry;
45 struct devlink_dl_reload_stats_entry *reload_stats_entry;
46};
47
48struct devlink_dl_reload_act_info {
49 struct {
50 __u32 reload_action:1;
51 } _present;
52
53 __u8 reload_action;
54 unsigned int n_reload_action_stats;
55 struct devlink_dl_reload_act_stats *reload_action_stats;
56};
57
58struct devlink_dl_reload_stats {
59 unsigned int n_reload_action_info;
60 struct devlink_dl_reload_act_info *reload_action_info;
61};
62
63struct devlink_dl_dev_stats {
64 struct {
65 __u32 reload_stats:1;
66 __u32 remote_reload_stats:1;
67 } _present;
68
69 struct devlink_dl_reload_stats reload_stats;
70 struct devlink_dl_reload_stats remote_reload_stats;
71};
72
73/* ============== DEVLINK_CMD_GET ============== */
74/* DEVLINK_CMD_GET - do */
75struct devlink_get_req {
76 struct {
77 __u32 bus_name_len;
78 __u32 dev_name_len;
79 } _present;
80
81 char *bus_name;
82 char *dev_name;
83};
84
85static inline struct devlink_get_req *devlink_get_req_alloc(void)
86{
87 return calloc(1, sizeof(struct devlink_get_req));
88}
89void devlink_get_req_free(struct devlink_get_req *req);
90
91static inline void
92devlink_get_req_set_bus_name(struct devlink_get_req *req, const char *bus_name)
93{
94 free(req->bus_name);
95 req->_present.bus_name_len = strlen(bus_name);
96 req->bus_name = malloc(req->_present.bus_name_len + 1);
97 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
98 req->bus_name[req->_present.bus_name_len] = 0;
99}
100static inline void
101devlink_get_req_set_dev_name(struct devlink_get_req *req, const char *dev_name)
102{
103 free(req->dev_name);
104 req->_present.dev_name_len = strlen(dev_name);
105 req->dev_name = malloc(req->_present.dev_name_len + 1);
106 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
107 req->dev_name[req->_present.dev_name_len] = 0;
108}
109
110struct devlink_get_rsp {
111 struct {
112 __u32 bus_name_len;
113 __u32 dev_name_len;
114 __u32 reload_failed:1;
115 __u32 reload_action:1;
116 __u32 dev_stats:1;
117 } _present;
118
119 char *bus_name;
120 char *dev_name;
121 __u8 reload_failed;
122 __u8 reload_action;
123 struct devlink_dl_dev_stats dev_stats;
124};
125
126void devlink_get_rsp_free(struct devlink_get_rsp *rsp);
127
128/*
129 * Get devlink instances.
130 */
131struct devlink_get_rsp *
132devlink_get(struct ynl_sock *ys, struct devlink_get_req *req);
133
134/* DEVLINK_CMD_GET - dump */
135struct devlink_get_list {
136 struct devlink_get_list *next;
137 struct devlink_get_rsp obj __attribute__ ((aligned (8)));
138};
139
140void devlink_get_list_free(struct devlink_get_list *rsp);
141
142struct devlink_get_list *devlink_get_dump(struct ynl_sock *ys);
143
144/* ============== DEVLINK_CMD_PORT_GET ============== */
145/* DEVLINK_CMD_PORT_GET - do */
146struct devlink_port_get_req {
147 struct {
148 __u32 bus_name_len;
149 __u32 dev_name_len;
150 __u32 port_index:1;
151 } _present;
152
153 char *bus_name;
154 char *dev_name;
155 __u32 port_index;
156};
157
158static inline struct devlink_port_get_req *devlink_port_get_req_alloc(void)
159{
160 return calloc(1, sizeof(struct devlink_port_get_req));
161}
162void devlink_port_get_req_free(struct devlink_port_get_req *req);
163
164static inline void
165devlink_port_get_req_set_bus_name(struct devlink_port_get_req *req,
166 const char *bus_name)
167{
168 free(req->bus_name);
169 req->_present.bus_name_len = strlen(bus_name);
170 req->bus_name = malloc(req->_present.bus_name_len + 1);
171 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
172 req->bus_name[req->_present.bus_name_len] = 0;
173}
174static inline void
175devlink_port_get_req_set_dev_name(struct devlink_port_get_req *req,
176 const char *dev_name)
177{
178 free(req->dev_name);
179 req->_present.dev_name_len = strlen(dev_name);
180 req->dev_name = malloc(req->_present.dev_name_len + 1);
181 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
182 req->dev_name[req->_present.dev_name_len] = 0;
183}
184static inline void
185devlink_port_get_req_set_port_index(struct devlink_port_get_req *req,
186 __u32 port_index)
187{
188 req->_present.port_index = 1;
189 req->port_index = port_index;
190}
191
192struct devlink_port_get_rsp {
193 struct {
194 __u32 bus_name_len;
195 __u32 dev_name_len;
196 __u32 port_index:1;
197 } _present;
198
199 char *bus_name;
200 char *dev_name;
201 __u32 port_index;
202};
203
204void devlink_port_get_rsp_free(struct devlink_port_get_rsp *rsp);
205
206/*
207 * Get devlink port instances.
208 */
209struct devlink_port_get_rsp *
210devlink_port_get(struct ynl_sock *ys, struct devlink_port_get_req *req);
211
212/* DEVLINK_CMD_PORT_GET - dump */
213struct devlink_port_get_req_dump {
214 struct {
215 __u32 bus_name_len;
216 __u32 dev_name_len;
217 } _present;
218
219 char *bus_name;
220 char *dev_name;
221};
222
223static inline struct devlink_port_get_req_dump *
224devlink_port_get_req_dump_alloc(void)
225{
226 return calloc(1, sizeof(struct devlink_port_get_req_dump));
227}
228void devlink_port_get_req_dump_free(struct devlink_port_get_req_dump *req);
229
230static inline void
231devlink_port_get_req_dump_set_bus_name(struct devlink_port_get_req_dump *req,
232 const char *bus_name)
233{
234 free(req->bus_name);
235 req->_present.bus_name_len = strlen(bus_name);
236 req->bus_name = malloc(req->_present.bus_name_len + 1);
237 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
238 req->bus_name[req->_present.bus_name_len] = 0;
239}
240static inline void
241devlink_port_get_req_dump_set_dev_name(struct devlink_port_get_req_dump *req,
242 const char *dev_name)
243{
244 free(req->dev_name);
245 req->_present.dev_name_len = strlen(dev_name);
246 req->dev_name = malloc(req->_present.dev_name_len + 1);
247 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
248 req->dev_name[req->_present.dev_name_len] = 0;
249}
250
251struct devlink_port_get_rsp_dump {
252 struct {
253 __u32 bus_name_len;
254 __u32 dev_name_len;
255 __u32 port_index:1;
256 } _present;
257
258 char *bus_name;
259 char *dev_name;
260 __u32 port_index;
261};
262
263struct devlink_port_get_rsp_list {
264 struct devlink_port_get_rsp_list *next;
265 struct devlink_port_get_rsp_dump obj __attribute__ ((aligned (8)));
266};
267
268void devlink_port_get_rsp_list_free(struct devlink_port_get_rsp_list *rsp);
269
270struct devlink_port_get_rsp_list *
271devlink_port_get_dump(struct ynl_sock *ys,
272 struct devlink_port_get_req_dump *req);
273
274/* ============== DEVLINK_CMD_SB_GET ============== */
275/* DEVLINK_CMD_SB_GET - do */
276struct devlink_sb_get_req {
277 struct {
278 __u32 bus_name_len;
279 __u32 dev_name_len;
280 __u32 sb_index:1;
281 } _present;
282
283 char *bus_name;
284 char *dev_name;
285 __u32 sb_index;
286};
287
288static inline struct devlink_sb_get_req *devlink_sb_get_req_alloc(void)
289{
290 return calloc(1, sizeof(struct devlink_sb_get_req));
291}
292void devlink_sb_get_req_free(struct devlink_sb_get_req *req);
293
294static inline void
295devlink_sb_get_req_set_bus_name(struct devlink_sb_get_req *req,
296 const char *bus_name)
297{
298 free(req->bus_name);
299 req->_present.bus_name_len = strlen(bus_name);
300 req->bus_name = malloc(req->_present.bus_name_len + 1);
301 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
302 req->bus_name[req->_present.bus_name_len] = 0;
303}
304static inline void
305devlink_sb_get_req_set_dev_name(struct devlink_sb_get_req *req,
306 const char *dev_name)
307{
308 free(req->dev_name);
309 req->_present.dev_name_len = strlen(dev_name);
310 req->dev_name = malloc(req->_present.dev_name_len + 1);
311 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
312 req->dev_name[req->_present.dev_name_len] = 0;
313}
314static inline void
315devlink_sb_get_req_set_sb_index(struct devlink_sb_get_req *req, __u32 sb_index)
316{
317 req->_present.sb_index = 1;
318 req->sb_index = sb_index;
319}
320
321struct devlink_sb_get_rsp {
322 struct {
323 __u32 bus_name_len;
324 __u32 dev_name_len;
325 __u32 sb_index:1;
326 } _present;
327
328 char *bus_name;
329 char *dev_name;
330 __u32 sb_index;
331};
332
333void devlink_sb_get_rsp_free(struct devlink_sb_get_rsp *rsp);
334
335/*
336 * Get shared buffer instances.
337 */
338struct devlink_sb_get_rsp *
339devlink_sb_get(struct ynl_sock *ys, struct devlink_sb_get_req *req);
340
341/* DEVLINK_CMD_SB_GET - dump */
342struct devlink_sb_get_req_dump {
343 struct {
344 __u32 bus_name_len;
345 __u32 dev_name_len;
346 } _present;
347
348 char *bus_name;
349 char *dev_name;
350};
351
352static inline struct devlink_sb_get_req_dump *
353devlink_sb_get_req_dump_alloc(void)
354{
355 return calloc(1, sizeof(struct devlink_sb_get_req_dump));
356}
357void devlink_sb_get_req_dump_free(struct devlink_sb_get_req_dump *req);
358
359static inline void
360devlink_sb_get_req_dump_set_bus_name(struct devlink_sb_get_req_dump *req,
361 const char *bus_name)
362{
363 free(req->bus_name);
364 req->_present.bus_name_len = strlen(bus_name);
365 req->bus_name = malloc(req->_present.bus_name_len + 1);
366 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
367 req->bus_name[req->_present.bus_name_len] = 0;
368}
369static inline void
370devlink_sb_get_req_dump_set_dev_name(struct devlink_sb_get_req_dump *req,
371 const char *dev_name)
372{
373 free(req->dev_name);
374 req->_present.dev_name_len = strlen(dev_name);
375 req->dev_name = malloc(req->_present.dev_name_len + 1);
376 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
377 req->dev_name[req->_present.dev_name_len] = 0;
378}
379
380struct devlink_sb_get_list {
381 struct devlink_sb_get_list *next;
382 struct devlink_sb_get_rsp obj __attribute__ ((aligned (8)));
383};
384
385void devlink_sb_get_list_free(struct devlink_sb_get_list *rsp);
386
387struct devlink_sb_get_list *
388devlink_sb_get_dump(struct ynl_sock *ys, struct devlink_sb_get_req_dump *req);
389
390/* ============== DEVLINK_CMD_SB_POOL_GET ============== */
391/* DEVLINK_CMD_SB_POOL_GET - do */
392struct devlink_sb_pool_get_req {
393 struct {
394 __u32 bus_name_len;
395 __u32 dev_name_len;
396 __u32 sb_index:1;
397 __u32 sb_pool_index:1;
398 } _present;
399
400 char *bus_name;
401 char *dev_name;
402 __u32 sb_index;
403 __u16 sb_pool_index;
404};
405
406static inline struct devlink_sb_pool_get_req *
407devlink_sb_pool_get_req_alloc(void)
408{
409 return calloc(1, sizeof(struct devlink_sb_pool_get_req));
410}
411void devlink_sb_pool_get_req_free(struct devlink_sb_pool_get_req *req);
412
413static inline void
414devlink_sb_pool_get_req_set_bus_name(struct devlink_sb_pool_get_req *req,
415 const char *bus_name)
416{
417 free(req->bus_name);
418 req->_present.bus_name_len = strlen(bus_name);
419 req->bus_name = malloc(req->_present.bus_name_len + 1);
420 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
421 req->bus_name[req->_present.bus_name_len] = 0;
422}
423static inline void
424devlink_sb_pool_get_req_set_dev_name(struct devlink_sb_pool_get_req *req,
425 const char *dev_name)
426{
427 free(req->dev_name);
428 req->_present.dev_name_len = strlen(dev_name);
429 req->dev_name = malloc(req->_present.dev_name_len + 1);
430 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
431 req->dev_name[req->_present.dev_name_len] = 0;
432}
433static inline void
434devlink_sb_pool_get_req_set_sb_index(struct devlink_sb_pool_get_req *req,
435 __u32 sb_index)
436{
437 req->_present.sb_index = 1;
438 req->sb_index = sb_index;
439}
440static inline void
441devlink_sb_pool_get_req_set_sb_pool_index(struct devlink_sb_pool_get_req *req,
442 __u16 sb_pool_index)
443{
444 req->_present.sb_pool_index = 1;
445 req->sb_pool_index = sb_pool_index;
446}
447
448struct devlink_sb_pool_get_rsp {
449 struct {
450 __u32 bus_name_len;
451 __u32 dev_name_len;
452 __u32 sb_index:1;
453 __u32 sb_pool_index:1;
454 } _present;
455
456 char *bus_name;
457 char *dev_name;
458 __u32 sb_index;
459 __u16 sb_pool_index;
460};
461
462void devlink_sb_pool_get_rsp_free(struct devlink_sb_pool_get_rsp *rsp);
463
464/*
465 * Get shared buffer pool instances.
466 */
467struct devlink_sb_pool_get_rsp *
468devlink_sb_pool_get(struct ynl_sock *ys, struct devlink_sb_pool_get_req *req);
469
470/* DEVLINK_CMD_SB_POOL_GET - dump */
471struct devlink_sb_pool_get_req_dump {
472 struct {
473 __u32 bus_name_len;
474 __u32 dev_name_len;
475 } _present;
476
477 char *bus_name;
478 char *dev_name;
479};
480
481static inline struct devlink_sb_pool_get_req_dump *
482devlink_sb_pool_get_req_dump_alloc(void)
483{
484 return calloc(1, sizeof(struct devlink_sb_pool_get_req_dump));
485}
486void
487devlink_sb_pool_get_req_dump_free(struct devlink_sb_pool_get_req_dump *req);
488
489static inline void
490devlink_sb_pool_get_req_dump_set_bus_name(struct devlink_sb_pool_get_req_dump *req,
491 const char *bus_name)
492{
493 free(req->bus_name);
494 req->_present.bus_name_len = strlen(bus_name);
495 req->bus_name = malloc(req->_present.bus_name_len + 1);
496 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
497 req->bus_name[req->_present.bus_name_len] = 0;
498}
499static inline void
500devlink_sb_pool_get_req_dump_set_dev_name(struct devlink_sb_pool_get_req_dump *req,
501 const char *dev_name)
502{
503 free(req->dev_name);
504 req->_present.dev_name_len = strlen(dev_name);
505 req->dev_name = malloc(req->_present.dev_name_len + 1);
506 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
507 req->dev_name[req->_present.dev_name_len] = 0;
508}
509
510struct devlink_sb_pool_get_list {
511 struct devlink_sb_pool_get_list *next;
512 struct devlink_sb_pool_get_rsp obj __attribute__ ((aligned (8)));
513};
514
515void devlink_sb_pool_get_list_free(struct devlink_sb_pool_get_list *rsp);
516
517struct devlink_sb_pool_get_list *
518devlink_sb_pool_get_dump(struct ynl_sock *ys,
519 struct devlink_sb_pool_get_req_dump *req);
520
521/* ============== DEVLINK_CMD_SB_PORT_POOL_GET ============== */
522/* DEVLINK_CMD_SB_PORT_POOL_GET - do */
523struct devlink_sb_port_pool_get_req {
524 struct {
525 __u32 bus_name_len;
526 __u32 dev_name_len;
527 __u32 port_index:1;
528 __u32 sb_index:1;
529 __u32 sb_pool_index:1;
530 } _present;
531
532 char *bus_name;
533 char *dev_name;
534 __u32 port_index;
535 __u32 sb_index;
536 __u16 sb_pool_index;
537};
538
539static inline struct devlink_sb_port_pool_get_req *
540devlink_sb_port_pool_get_req_alloc(void)
541{
542 return calloc(1, sizeof(struct devlink_sb_port_pool_get_req));
543}
544void
545devlink_sb_port_pool_get_req_free(struct devlink_sb_port_pool_get_req *req);
546
547static inline void
548devlink_sb_port_pool_get_req_set_bus_name(struct devlink_sb_port_pool_get_req *req,
549 const char *bus_name)
550{
551 free(req->bus_name);
552 req->_present.bus_name_len = strlen(bus_name);
553 req->bus_name = malloc(req->_present.bus_name_len + 1);
554 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
555 req->bus_name[req->_present.bus_name_len] = 0;
556}
557static inline void
558devlink_sb_port_pool_get_req_set_dev_name(struct devlink_sb_port_pool_get_req *req,
559 const char *dev_name)
560{
561 free(req->dev_name);
562 req->_present.dev_name_len = strlen(dev_name);
563 req->dev_name = malloc(req->_present.dev_name_len + 1);
564 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
565 req->dev_name[req->_present.dev_name_len] = 0;
566}
567static inline void
568devlink_sb_port_pool_get_req_set_port_index(struct devlink_sb_port_pool_get_req *req,
569 __u32 port_index)
570{
571 req->_present.port_index = 1;
572 req->port_index = port_index;
573}
574static inline void
575devlink_sb_port_pool_get_req_set_sb_index(struct devlink_sb_port_pool_get_req *req,
576 __u32 sb_index)
577{
578 req->_present.sb_index = 1;
579 req->sb_index = sb_index;
580}
581static inline void
582devlink_sb_port_pool_get_req_set_sb_pool_index(struct devlink_sb_port_pool_get_req *req,
583 __u16 sb_pool_index)
584{
585 req->_present.sb_pool_index = 1;
586 req->sb_pool_index = sb_pool_index;
587}
588
589struct devlink_sb_port_pool_get_rsp {
590 struct {
591 __u32 bus_name_len;
592 __u32 dev_name_len;
593 __u32 port_index:1;
594 __u32 sb_index:1;
595 __u32 sb_pool_index:1;
596 } _present;
597
598 char *bus_name;
599 char *dev_name;
600 __u32 port_index;
601 __u32 sb_index;
602 __u16 sb_pool_index;
603};
604
605void
606devlink_sb_port_pool_get_rsp_free(struct devlink_sb_port_pool_get_rsp *rsp);
607
608/*
609 * Get shared buffer port-pool combinations and threshold.
610 */
611struct devlink_sb_port_pool_get_rsp *
612devlink_sb_port_pool_get(struct ynl_sock *ys,
613 struct devlink_sb_port_pool_get_req *req);
614
615/* DEVLINK_CMD_SB_PORT_POOL_GET - dump */
616struct devlink_sb_port_pool_get_req_dump {
617 struct {
618 __u32 bus_name_len;
619 __u32 dev_name_len;
620 } _present;
621
622 char *bus_name;
623 char *dev_name;
624};
625
626static inline struct devlink_sb_port_pool_get_req_dump *
627devlink_sb_port_pool_get_req_dump_alloc(void)
628{
629 return calloc(1, sizeof(struct devlink_sb_port_pool_get_req_dump));
630}
631void
632devlink_sb_port_pool_get_req_dump_free(struct devlink_sb_port_pool_get_req_dump *req);
633
634static inline void
635devlink_sb_port_pool_get_req_dump_set_bus_name(struct devlink_sb_port_pool_get_req_dump *req,
636 const char *bus_name)
637{
638 free(req->bus_name);
639 req->_present.bus_name_len = strlen(bus_name);
640 req->bus_name = malloc(req->_present.bus_name_len + 1);
641 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
642 req->bus_name[req->_present.bus_name_len] = 0;
643}
644static inline void
645devlink_sb_port_pool_get_req_dump_set_dev_name(struct devlink_sb_port_pool_get_req_dump *req,
646 const char *dev_name)
647{
648 free(req->dev_name);
649 req->_present.dev_name_len = strlen(dev_name);
650 req->dev_name = malloc(req->_present.dev_name_len + 1);
651 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
652 req->dev_name[req->_present.dev_name_len] = 0;
653}
654
655struct devlink_sb_port_pool_get_list {
656 struct devlink_sb_port_pool_get_list *next;
657 struct devlink_sb_port_pool_get_rsp obj __attribute__ ((aligned (8)));
658};
659
660void
661devlink_sb_port_pool_get_list_free(struct devlink_sb_port_pool_get_list *rsp);
662
663struct devlink_sb_port_pool_get_list *
664devlink_sb_port_pool_get_dump(struct ynl_sock *ys,
665 struct devlink_sb_port_pool_get_req_dump *req);
666
667/* ============== DEVLINK_CMD_SB_TC_POOL_BIND_GET ============== */
668/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */
669struct devlink_sb_tc_pool_bind_get_req {
670 struct {
671 __u32 bus_name_len;
672 __u32 dev_name_len;
673 __u32 port_index:1;
674 __u32 sb_index:1;
675 __u32 sb_pool_type:1;
676 __u32 sb_tc_index:1;
677 } _present;
678
679 char *bus_name;
680 char *dev_name;
681 __u32 port_index;
682 __u32 sb_index;
683 enum devlink_sb_pool_type sb_pool_type;
684 __u16 sb_tc_index;
685};
686
687static inline struct devlink_sb_tc_pool_bind_get_req *
688devlink_sb_tc_pool_bind_get_req_alloc(void)
689{
690 return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_get_req));
691}
692void
693devlink_sb_tc_pool_bind_get_req_free(struct devlink_sb_tc_pool_bind_get_req *req);
694
695static inline void
696devlink_sb_tc_pool_bind_get_req_set_bus_name(struct devlink_sb_tc_pool_bind_get_req *req,
697 const char *bus_name)
698{
699 free(req->bus_name);
700 req->_present.bus_name_len = strlen(bus_name);
701 req->bus_name = malloc(req->_present.bus_name_len + 1);
702 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
703 req->bus_name[req->_present.bus_name_len] = 0;
704}
705static inline void
706devlink_sb_tc_pool_bind_get_req_set_dev_name(struct devlink_sb_tc_pool_bind_get_req *req,
707 const char *dev_name)
708{
709 free(req->dev_name);
710 req->_present.dev_name_len = strlen(dev_name);
711 req->dev_name = malloc(req->_present.dev_name_len + 1);
712 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
713 req->dev_name[req->_present.dev_name_len] = 0;
714}
715static inline void
716devlink_sb_tc_pool_bind_get_req_set_port_index(struct devlink_sb_tc_pool_bind_get_req *req,
717 __u32 port_index)
718{
719 req->_present.port_index = 1;
720 req->port_index = port_index;
721}
722static inline void
723devlink_sb_tc_pool_bind_get_req_set_sb_index(struct devlink_sb_tc_pool_bind_get_req *req,
724 __u32 sb_index)
725{
726 req->_present.sb_index = 1;
727 req->sb_index = sb_index;
728}
729static inline void
730devlink_sb_tc_pool_bind_get_req_set_sb_pool_type(struct devlink_sb_tc_pool_bind_get_req *req,
731 enum devlink_sb_pool_type sb_pool_type)
732{
733 req->_present.sb_pool_type = 1;
734 req->sb_pool_type = sb_pool_type;
735}
736static inline void
737devlink_sb_tc_pool_bind_get_req_set_sb_tc_index(struct devlink_sb_tc_pool_bind_get_req *req,
738 __u16 sb_tc_index)
739{
740 req->_present.sb_tc_index = 1;
741 req->sb_tc_index = sb_tc_index;
742}
743
744struct devlink_sb_tc_pool_bind_get_rsp {
745 struct {
746 __u32 bus_name_len;
747 __u32 dev_name_len;
748 __u32 port_index:1;
749 __u32 sb_index:1;
750 __u32 sb_pool_type:1;
751 __u32 sb_tc_index:1;
752 } _present;
753
754 char *bus_name;
755 char *dev_name;
756 __u32 port_index;
757 __u32 sb_index;
758 enum devlink_sb_pool_type sb_pool_type;
759 __u16 sb_tc_index;
760};
761
762void
763devlink_sb_tc_pool_bind_get_rsp_free(struct devlink_sb_tc_pool_bind_get_rsp *rsp);
764
765/*
766 * Get shared buffer port-TC to pool bindings and threshold.
767 */
768struct devlink_sb_tc_pool_bind_get_rsp *
769devlink_sb_tc_pool_bind_get(struct ynl_sock *ys,
770 struct devlink_sb_tc_pool_bind_get_req *req);
771
772/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - dump */
773struct devlink_sb_tc_pool_bind_get_req_dump {
774 struct {
775 __u32 bus_name_len;
776 __u32 dev_name_len;
777 } _present;
778
779 char *bus_name;
780 char *dev_name;
781};
782
783static inline struct devlink_sb_tc_pool_bind_get_req_dump *
784devlink_sb_tc_pool_bind_get_req_dump_alloc(void)
785{
786 return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_get_req_dump));
787}
788void
789devlink_sb_tc_pool_bind_get_req_dump_free(struct devlink_sb_tc_pool_bind_get_req_dump *req);
790
791static inline void
792devlink_sb_tc_pool_bind_get_req_dump_set_bus_name(struct devlink_sb_tc_pool_bind_get_req_dump *req,
793 const char *bus_name)
794{
795 free(req->bus_name);
796 req->_present.bus_name_len = strlen(bus_name);
797 req->bus_name = malloc(req->_present.bus_name_len + 1);
798 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
799 req->bus_name[req->_present.bus_name_len] = 0;
800}
801static inline void
802devlink_sb_tc_pool_bind_get_req_dump_set_dev_name(struct devlink_sb_tc_pool_bind_get_req_dump *req,
803 const char *dev_name)
804{
805 free(req->dev_name);
806 req->_present.dev_name_len = strlen(dev_name);
807 req->dev_name = malloc(req->_present.dev_name_len + 1);
808 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
809 req->dev_name[req->_present.dev_name_len] = 0;
810}
811
812struct devlink_sb_tc_pool_bind_get_list {
813 struct devlink_sb_tc_pool_bind_get_list *next;
814 struct devlink_sb_tc_pool_bind_get_rsp obj __attribute__ ((aligned (8)));
815};
816
817void
818devlink_sb_tc_pool_bind_get_list_free(struct devlink_sb_tc_pool_bind_get_list *rsp);
819
820struct devlink_sb_tc_pool_bind_get_list *
821devlink_sb_tc_pool_bind_get_dump(struct ynl_sock *ys,
822 struct devlink_sb_tc_pool_bind_get_req_dump *req);
823
824/* ============== DEVLINK_CMD_PARAM_GET ============== */
825/* DEVLINK_CMD_PARAM_GET - do */
826struct devlink_param_get_req {
827 struct {
828 __u32 bus_name_len;
829 __u32 dev_name_len;
830 __u32 param_name_len;
831 } _present;
832
833 char *bus_name;
834 char *dev_name;
835 char *param_name;
836};
837
838static inline struct devlink_param_get_req *devlink_param_get_req_alloc(void)
839{
840 return calloc(1, sizeof(struct devlink_param_get_req));
841}
842void devlink_param_get_req_free(struct devlink_param_get_req *req);
843
844static inline void
845devlink_param_get_req_set_bus_name(struct devlink_param_get_req *req,
846 const char *bus_name)
847{
848 free(req->bus_name);
849 req->_present.bus_name_len = strlen(bus_name);
850 req->bus_name = malloc(req->_present.bus_name_len + 1);
851 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
852 req->bus_name[req->_present.bus_name_len] = 0;
853}
854static inline void
855devlink_param_get_req_set_dev_name(struct devlink_param_get_req *req,
856 const char *dev_name)
857{
858 free(req->dev_name);
859 req->_present.dev_name_len = strlen(dev_name);
860 req->dev_name = malloc(req->_present.dev_name_len + 1);
861 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
862 req->dev_name[req->_present.dev_name_len] = 0;
863}
864static inline void
865devlink_param_get_req_set_param_name(struct devlink_param_get_req *req,
866 const char *param_name)
867{
868 free(req->param_name);
869 req->_present.param_name_len = strlen(param_name);
870 req->param_name = malloc(req->_present.param_name_len + 1);
871 memcpy(req->param_name, param_name, req->_present.param_name_len);
872 req->param_name[req->_present.param_name_len] = 0;
873}
874
875struct devlink_param_get_rsp {
876 struct {
877 __u32 bus_name_len;
878 __u32 dev_name_len;
879 __u32 param_name_len;
880 } _present;
881
882 char *bus_name;
883 char *dev_name;
884 char *param_name;
885};
886
887void devlink_param_get_rsp_free(struct devlink_param_get_rsp *rsp);
888
889/*
890 * Get param instances.
891 */
892struct devlink_param_get_rsp *
893devlink_param_get(struct ynl_sock *ys, struct devlink_param_get_req *req);
894
895/* DEVLINK_CMD_PARAM_GET - dump */
896struct devlink_param_get_req_dump {
897 struct {
898 __u32 bus_name_len;
899 __u32 dev_name_len;
900 } _present;
901
902 char *bus_name;
903 char *dev_name;
904};
905
906static inline struct devlink_param_get_req_dump *
907devlink_param_get_req_dump_alloc(void)
908{
909 return calloc(1, sizeof(struct devlink_param_get_req_dump));
910}
911void devlink_param_get_req_dump_free(struct devlink_param_get_req_dump *req);
912
913static inline void
914devlink_param_get_req_dump_set_bus_name(struct devlink_param_get_req_dump *req,
915 const char *bus_name)
916{
917 free(req->bus_name);
918 req->_present.bus_name_len = strlen(bus_name);
919 req->bus_name = malloc(req->_present.bus_name_len + 1);
920 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
921 req->bus_name[req->_present.bus_name_len] = 0;
922}
923static inline void
924devlink_param_get_req_dump_set_dev_name(struct devlink_param_get_req_dump *req,
925 const char *dev_name)
926{
927 free(req->dev_name);
928 req->_present.dev_name_len = strlen(dev_name);
929 req->dev_name = malloc(req->_present.dev_name_len + 1);
930 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
931 req->dev_name[req->_present.dev_name_len] = 0;
932}
933
934struct devlink_param_get_list {
935 struct devlink_param_get_list *next;
936 struct devlink_param_get_rsp obj __attribute__ ((aligned (8)));
937};
938
939void devlink_param_get_list_free(struct devlink_param_get_list *rsp);
940
941struct devlink_param_get_list *
942devlink_param_get_dump(struct ynl_sock *ys,
943 struct devlink_param_get_req_dump *req);
944
945/* ============== DEVLINK_CMD_REGION_GET ============== */
946/* DEVLINK_CMD_REGION_GET - do */
947struct devlink_region_get_req {
948 struct {
949 __u32 bus_name_len;
950 __u32 dev_name_len;
951 __u32 port_index:1;
952 __u32 region_name_len;
953 } _present;
954
955 char *bus_name;
956 char *dev_name;
957 __u32 port_index;
958 char *region_name;
959};
960
961static inline struct devlink_region_get_req *devlink_region_get_req_alloc(void)
962{
963 return calloc(1, sizeof(struct devlink_region_get_req));
964}
965void devlink_region_get_req_free(struct devlink_region_get_req *req);
966
967static inline void
968devlink_region_get_req_set_bus_name(struct devlink_region_get_req *req,
969 const char *bus_name)
970{
971 free(req->bus_name);
972 req->_present.bus_name_len = strlen(bus_name);
973 req->bus_name = malloc(req->_present.bus_name_len + 1);
974 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
975 req->bus_name[req->_present.bus_name_len] = 0;
976}
977static inline void
978devlink_region_get_req_set_dev_name(struct devlink_region_get_req *req,
979 const char *dev_name)
980{
981 free(req->dev_name);
982 req->_present.dev_name_len = strlen(dev_name);
983 req->dev_name = malloc(req->_present.dev_name_len + 1);
984 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
985 req->dev_name[req->_present.dev_name_len] = 0;
986}
987static inline void
988devlink_region_get_req_set_port_index(struct devlink_region_get_req *req,
989 __u32 port_index)
990{
991 req->_present.port_index = 1;
992 req->port_index = port_index;
993}
994static inline void
995devlink_region_get_req_set_region_name(struct devlink_region_get_req *req,
996 const char *region_name)
997{
998 free(req->region_name);
999 req->_present.region_name_len = strlen(region_name);
1000 req->region_name = malloc(req->_present.region_name_len + 1);
1001 memcpy(req->region_name, region_name, req->_present.region_name_len);
1002 req->region_name[req->_present.region_name_len] = 0;
1003}
1004
1005struct devlink_region_get_rsp {
1006 struct {
1007 __u32 bus_name_len;
1008 __u32 dev_name_len;
1009 __u32 port_index:1;
1010 __u32 region_name_len;
1011 } _present;
1012
1013 char *bus_name;
1014 char *dev_name;
1015 __u32 port_index;
1016 char *region_name;
1017};
1018
1019void devlink_region_get_rsp_free(struct devlink_region_get_rsp *rsp);
1020
1021/*
1022 * Get region instances.
1023 */
1024struct devlink_region_get_rsp *
1025devlink_region_get(struct ynl_sock *ys, struct devlink_region_get_req *req);
1026
1027/* DEVLINK_CMD_REGION_GET - dump */
1028struct devlink_region_get_req_dump {
1029 struct {
1030 __u32 bus_name_len;
1031 __u32 dev_name_len;
1032 } _present;
1033
1034 char *bus_name;
1035 char *dev_name;
1036};
1037
1038static inline struct devlink_region_get_req_dump *
1039devlink_region_get_req_dump_alloc(void)
1040{
1041 return calloc(1, sizeof(struct devlink_region_get_req_dump));
1042}
1043void devlink_region_get_req_dump_free(struct devlink_region_get_req_dump *req);
1044
1045static inline void
1046devlink_region_get_req_dump_set_bus_name(struct devlink_region_get_req_dump *req,
1047 const char *bus_name)
1048{
1049 free(req->bus_name);
1050 req->_present.bus_name_len = strlen(bus_name);
1051 req->bus_name = malloc(req->_present.bus_name_len + 1);
1052 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1053 req->bus_name[req->_present.bus_name_len] = 0;
1054}
1055static inline void
1056devlink_region_get_req_dump_set_dev_name(struct devlink_region_get_req_dump *req,
1057 const char *dev_name)
1058{
1059 free(req->dev_name);
1060 req->_present.dev_name_len = strlen(dev_name);
1061 req->dev_name = malloc(req->_present.dev_name_len + 1);
1062 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1063 req->dev_name[req->_present.dev_name_len] = 0;
1064}
1065
1066struct devlink_region_get_list {
1067 struct devlink_region_get_list *next;
1068 struct devlink_region_get_rsp obj __attribute__ ((aligned (8)));
1069};
1070
1071void devlink_region_get_list_free(struct devlink_region_get_list *rsp);
1072
1073struct devlink_region_get_list *
1074devlink_region_get_dump(struct ynl_sock *ys,
1075 struct devlink_region_get_req_dump *req);
1076
1077/* ============== DEVLINK_CMD_INFO_GET ============== */
1078/* DEVLINK_CMD_INFO_GET - do */
1079struct devlink_info_get_req {
1080 struct {
1081 __u32 bus_name_len;
1082 __u32 dev_name_len;
1083 } _present;
1084
1085 char *bus_name;
1086 char *dev_name;
1087};
1088
1089static inline struct devlink_info_get_req *devlink_info_get_req_alloc(void)
1090{
1091 return calloc(1, sizeof(struct devlink_info_get_req));
1092}
1093void devlink_info_get_req_free(struct devlink_info_get_req *req);
1094
1095static inline void
1096devlink_info_get_req_set_bus_name(struct devlink_info_get_req *req,
1097 const char *bus_name)
1098{
1099 free(req->bus_name);
1100 req->_present.bus_name_len = strlen(bus_name);
1101 req->bus_name = malloc(req->_present.bus_name_len + 1);
1102 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1103 req->bus_name[req->_present.bus_name_len] = 0;
1104}
1105static inline void
1106devlink_info_get_req_set_dev_name(struct devlink_info_get_req *req,
1107 const char *dev_name)
1108{
1109 free(req->dev_name);
1110 req->_present.dev_name_len = strlen(dev_name);
1111 req->dev_name = malloc(req->_present.dev_name_len + 1);
1112 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1113 req->dev_name[req->_present.dev_name_len] = 0;
1114}
1115
1116struct devlink_info_get_rsp {
1117 struct {
1118 __u32 bus_name_len;
1119 __u32 dev_name_len;
1120 __u32 info_driver_name_len;
1121 __u32 info_serial_number_len;
1122 } _present;
1123
1124 char *bus_name;
1125 char *dev_name;
1126 char *info_driver_name;
1127 char *info_serial_number;
1128 unsigned int n_info_version_fixed;
1129 struct devlink_dl_info_version *info_version_fixed;
1130 unsigned int n_info_version_running;
1131 struct devlink_dl_info_version *info_version_running;
1132 unsigned int n_info_version_stored;
1133 struct devlink_dl_info_version *info_version_stored;
1134};
1135
1136void devlink_info_get_rsp_free(struct devlink_info_get_rsp *rsp);
1137
1138/*
1139 * Get device information, like driver name, hardware and firmware versions etc.
1140 */
1141struct devlink_info_get_rsp *
1142devlink_info_get(struct ynl_sock *ys, struct devlink_info_get_req *req);
1143
1144/* DEVLINK_CMD_INFO_GET - dump */
1145struct devlink_info_get_list {
1146 struct devlink_info_get_list *next;
1147 struct devlink_info_get_rsp obj __attribute__ ((aligned (8)));
1148};
1149
1150void devlink_info_get_list_free(struct devlink_info_get_list *rsp);
1151
1152struct devlink_info_get_list *devlink_info_get_dump(struct ynl_sock *ys);
1153
1154/* ============== DEVLINK_CMD_HEALTH_REPORTER_GET ============== */
1155/* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
1156struct devlink_health_reporter_get_req {
1157 struct {
1158 __u32 bus_name_len;
1159 __u32 dev_name_len;
1160 __u32 port_index:1;
1161 __u32 health_reporter_name_len;
1162 } _present;
1163
1164 char *bus_name;
1165 char *dev_name;
1166 __u32 port_index;
1167 char *health_reporter_name;
1168};
1169
1170static inline struct devlink_health_reporter_get_req *
1171devlink_health_reporter_get_req_alloc(void)
1172{
1173 return calloc(1, sizeof(struct devlink_health_reporter_get_req));
1174}
1175void
1176devlink_health_reporter_get_req_free(struct devlink_health_reporter_get_req *req);
1177
1178static inline void
1179devlink_health_reporter_get_req_set_bus_name(struct devlink_health_reporter_get_req *req,
1180 const char *bus_name)
1181{
1182 free(req->bus_name);
1183 req->_present.bus_name_len = strlen(bus_name);
1184 req->bus_name = malloc(req->_present.bus_name_len + 1);
1185 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1186 req->bus_name[req->_present.bus_name_len] = 0;
1187}
1188static inline void
1189devlink_health_reporter_get_req_set_dev_name(struct devlink_health_reporter_get_req *req,
1190 const char *dev_name)
1191{
1192 free(req->dev_name);
1193 req->_present.dev_name_len = strlen(dev_name);
1194 req->dev_name = malloc(req->_present.dev_name_len + 1);
1195 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1196 req->dev_name[req->_present.dev_name_len] = 0;
1197}
1198static inline void
1199devlink_health_reporter_get_req_set_port_index(struct devlink_health_reporter_get_req *req,
1200 __u32 port_index)
1201{
1202 req->_present.port_index = 1;
1203 req->port_index = port_index;
1204}
1205static inline void
1206devlink_health_reporter_get_req_set_health_reporter_name(struct devlink_health_reporter_get_req *req,
1207 const char *health_reporter_name)
1208{
1209 free(req->health_reporter_name);
1210 req->_present.health_reporter_name_len = strlen(health_reporter_name);
1211 req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
1212 memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
1213 req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
1214}
1215
1216struct devlink_health_reporter_get_rsp {
1217 struct {
1218 __u32 bus_name_len;
1219 __u32 dev_name_len;
1220 __u32 port_index:1;
1221 __u32 health_reporter_name_len;
1222 } _present;
1223
1224 char *bus_name;
1225 char *dev_name;
1226 __u32 port_index;
1227 char *health_reporter_name;
1228};
1229
1230void
1231devlink_health_reporter_get_rsp_free(struct devlink_health_reporter_get_rsp *rsp);
1232
1233/*
1234 * Get health reporter instances.
1235 */
1236struct devlink_health_reporter_get_rsp *
1237devlink_health_reporter_get(struct ynl_sock *ys,
1238 struct devlink_health_reporter_get_req *req);
1239
1240/* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */
1241struct devlink_health_reporter_get_req_dump {
1242 struct {
1243 __u32 bus_name_len;
1244 __u32 dev_name_len;
1245 __u32 port_index:1;
1246 } _present;
1247
1248 char *bus_name;
1249 char *dev_name;
1250 __u32 port_index;
1251};
1252
1253static inline struct devlink_health_reporter_get_req_dump *
1254devlink_health_reporter_get_req_dump_alloc(void)
1255{
1256 return calloc(1, sizeof(struct devlink_health_reporter_get_req_dump));
1257}
1258void
1259devlink_health_reporter_get_req_dump_free(struct devlink_health_reporter_get_req_dump *req);
1260
1261static inline void
1262devlink_health_reporter_get_req_dump_set_bus_name(struct devlink_health_reporter_get_req_dump *req,
1263 const char *bus_name)
1264{
1265 free(req->bus_name);
1266 req->_present.bus_name_len = strlen(bus_name);
1267 req->bus_name = malloc(req->_present.bus_name_len + 1);
1268 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1269 req->bus_name[req->_present.bus_name_len] = 0;
1270}
1271static inline void
1272devlink_health_reporter_get_req_dump_set_dev_name(struct devlink_health_reporter_get_req_dump *req,
1273 const char *dev_name)
1274{
1275 free(req->dev_name);
1276 req->_present.dev_name_len = strlen(dev_name);
1277 req->dev_name = malloc(req->_present.dev_name_len + 1);
1278 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1279 req->dev_name[req->_present.dev_name_len] = 0;
1280}
1281static inline void
1282devlink_health_reporter_get_req_dump_set_port_index(struct devlink_health_reporter_get_req_dump *req,
1283 __u32 port_index)
1284{
1285 req->_present.port_index = 1;
1286 req->port_index = port_index;
1287}
1288
1289struct devlink_health_reporter_get_list {
1290 struct devlink_health_reporter_get_list *next;
1291 struct devlink_health_reporter_get_rsp obj __attribute__ ((aligned (8)));
1292};
1293
1294void
1295devlink_health_reporter_get_list_free(struct devlink_health_reporter_get_list *rsp);
1296
1297struct devlink_health_reporter_get_list *
1298devlink_health_reporter_get_dump(struct ynl_sock *ys,
1299 struct devlink_health_reporter_get_req_dump *req);
1300
1301/* ============== DEVLINK_CMD_TRAP_GET ============== */
1302/* DEVLINK_CMD_TRAP_GET - do */
1303struct devlink_trap_get_req {
1304 struct {
1305 __u32 bus_name_len;
1306 __u32 dev_name_len;
1307 __u32 trap_name_len;
1308 } _present;
1309
1310 char *bus_name;
1311 char *dev_name;
1312 char *trap_name;
1313};
1314
1315static inline struct devlink_trap_get_req *devlink_trap_get_req_alloc(void)
1316{
1317 return calloc(1, sizeof(struct devlink_trap_get_req));
1318}
1319void devlink_trap_get_req_free(struct devlink_trap_get_req *req);
1320
1321static inline void
1322devlink_trap_get_req_set_bus_name(struct devlink_trap_get_req *req,
1323 const char *bus_name)
1324{
1325 free(req->bus_name);
1326 req->_present.bus_name_len = strlen(bus_name);
1327 req->bus_name = malloc(req->_present.bus_name_len + 1);
1328 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1329 req->bus_name[req->_present.bus_name_len] = 0;
1330}
1331static inline void
1332devlink_trap_get_req_set_dev_name(struct devlink_trap_get_req *req,
1333 const char *dev_name)
1334{
1335 free(req->dev_name);
1336 req->_present.dev_name_len = strlen(dev_name);
1337 req->dev_name = malloc(req->_present.dev_name_len + 1);
1338 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1339 req->dev_name[req->_present.dev_name_len] = 0;
1340}
1341static inline void
1342devlink_trap_get_req_set_trap_name(struct devlink_trap_get_req *req,
1343 const char *trap_name)
1344{
1345 free(req->trap_name);
1346 req->_present.trap_name_len = strlen(trap_name);
1347 req->trap_name = malloc(req->_present.trap_name_len + 1);
1348 memcpy(req->trap_name, trap_name, req->_present.trap_name_len);
1349 req->trap_name[req->_present.trap_name_len] = 0;
1350}
1351
1352struct devlink_trap_get_rsp {
1353 struct {
1354 __u32 bus_name_len;
1355 __u32 dev_name_len;
1356 __u32 trap_name_len;
1357 } _present;
1358
1359 char *bus_name;
1360 char *dev_name;
1361 char *trap_name;
1362};
1363
1364void devlink_trap_get_rsp_free(struct devlink_trap_get_rsp *rsp);
1365
1366/*
1367 * Get trap instances.
1368 */
1369struct devlink_trap_get_rsp *
1370devlink_trap_get(struct ynl_sock *ys, struct devlink_trap_get_req *req);
1371
1372/* DEVLINK_CMD_TRAP_GET - dump */
1373struct devlink_trap_get_req_dump {
1374 struct {
1375 __u32 bus_name_len;
1376 __u32 dev_name_len;
1377 } _present;
1378
1379 char *bus_name;
1380 char *dev_name;
1381};
1382
1383static inline struct devlink_trap_get_req_dump *
1384devlink_trap_get_req_dump_alloc(void)
1385{
1386 return calloc(1, sizeof(struct devlink_trap_get_req_dump));
1387}
1388void devlink_trap_get_req_dump_free(struct devlink_trap_get_req_dump *req);
1389
1390static inline void
1391devlink_trap_get_req_dump_set_bus_name(struct devlink_trap_get_req_dump *req,
1392 const char *bus_name)
1393{
1394 free(req->bus_name);
1395 req->_present.bus_name_len = strlen(bus_name);
1396 req->bus_name = malloc(req->_present.bus_name_len + 1);
1397 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1398 req->bus_name[req->_present.bus_name_len] = 0;
1399}
1400static inline void
1401devlink_trap_get_req_dump_set_dev_name(struct devlink_trap_get_req_dump *req,
1402 const char *dev_name)
1403{
1404 free(req->dev_name);
1405 req->_present.dev_name_len = strlen(dev_name);
1406 req->dev_name = malloc(req->_present.dev_name_len + 1);
1407 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1408 req->dev_name[req->_present.dev_name_len] = 0;
1409}
1410
1411struct devlink_trap_get_list {
1412 struct devlink_trap_get_list *next;
1413 struct devlink_trap_get_rsp obj __attribute__ ((aligned (8)));
1414};
1415
1416void devlink_trap_get_list_free(struct devlink_trap_get_list *rsp);
1417
1418struct devlink_trap_get_list *
1419devlink_trap_get_dump(struct ynl_sock *ys,
1420 struct devlink_trap_get_req_dump *req);
1421
1422/* ============== DEVLINK_CMD_TRAP_GROUP_GET ============== */
1423/* DEVLINK_CMD_TRAP_GROUP_GET - do */
1424struct devlink_trap_group_get_req {
1425 struct {
1426 __u32 bus_name_len;
1427 __u32 dev_name_len;
1428 __u32 trap_group_name_len;
1429 } _present;
1430
1431 char *bus_name;
1432 char *dev_name;
1433 char *trap_group_name;
1434};
1435
1436static inline struct devlink_trap_group_get_req *
1437devlink_trap_group_get_req_alloc(void)
1438{
1439 return calloc(1, sizeof(struct devlink_trap_group_get_req));
1440}
1441void devlink_trap_group_get_req_free(struct devlink_trap_group_get_req *req);
1442
1443static inline void
1444devlink_trap_group_get_req_set_bus_name(struct devlink_trap_group_get_req *req,
1445 const char *bus_name)
1446{
1447 free(req->bus_name);
1448 req->_present.bus_name_len = strlen(bus_name);
1449 req->bus_name = malloc(req->_present.bus_name_len + 1);
1450 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1451 req->bus_name[req->_present.bus_name_len] = 0;
1452}
1453static inline void
1454devlink_trap_group_get_req_set_dev_name(struct devlink_trap_group_get_req *req,
1455 const char *dev_name)
1456{
1457 free(req->dev_name);
1458 req->_present.dev_name_len = strlen(dev_name);
1459 req->dev_name = malloc(req->_present.dev_name_len + 1);
1460 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1461 req->dev_name[req->_present.dev_name_len] = 0;
1462}
1463static inline void
1464devlink_trap_group_get_req_set_trap_group_name(struct devlink_trap_group_get_req *req,
1465 const char *trap_group_name)
1466{
1467 free(req->trap_group_name);
1468 req->_present.trap_group_name_len = strlen(trap_group_name);
1469 req->trap_group_name = malloc(req->_present.trap_group_name_len + 1);
1470 memcpy(req->trap_group_name, trap_group_name, req->_present.trap_group_name_len);
1471 req->trap_group_name[req->_present.trap_group_name_len] = 0;
1472}
1473
1474struct devlink_trap_group_get_rsp {
1475 struct {
1476 __u32 bus_name_len;
1477 __u32 dev_name_len;
1478 __u32 trap_group_name_len;
1479 } _present;
1480
1481 char *bus_name;
1482 char *dev_name;
1483 char *trap_group_name;
1484};
1485
1486void devlink_trap_group_get_rsp_free(struct devlink_trap_group_get_rsp *rsp);
1487
1488/*
1489 * Get trap group instances.
1490 */
1491struct devlink_trap_group_get_rsp *
1492devlink_trap_group_get(struct ynl_sock *ys,
1493 struct devlink_trap_group_get_req *req);
1494
1495/* DEVLINK_CMD_TRAP_GROUP_GET - dump */
1496struct devlink_trap_group_get_req_dump {
1497 struct {
1498 __u32 bus_name_len;
1499 __u32 dev_name_len;
1500 } _present;
1501
1502 char *bus_name;
1503 char *dev_name;
1504};
1505
1506static inline struct devlink_trap_group_get_req_dump *
1507devlink_trap_group_get_req_dump_alloc(void)
1508{
1509 return calloc(1, sizeof(struct devlink_trap_group_get_req_dump));
1510}
1511void
1512devlink_trap_group_get_req_dump_free(struct devlink_trap_group_get_req_dump *req);
1513
1514static inline void
1515devlink_trap_group_get_req_dump_set_bus_name(struct devlink_trap_group_get_req_dump *req,
1516 const char *bus_name)
1517{
1518 free(req->bus_name);
1519 req->_present.bus_name_len = strlen(bus_name);
1520 req->bus_name = malloc(req->_present.bus_name_len + 1);
1521 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1522 req->bus_name[req->_present.bus_name_len] = 0;
1523}
1524static inline void
1525devlink_trap_group_get_req_dump_set_dev_name(struct devlink_trap_group_get_req_dump *req,
1526 const char *dev_name)
1527{
1528 free(req->dev_name);
1529 req->_present.dev_name_len = strlen(dev_name);
1530 req->dev_name = malloc(req->_present.dev_name_len + 1);
1531 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1532 req->dev_name[req->_present.dev_name_len] = 0;
1533}
1534
1535struct devlink_trap_group_get_list {
1536 struct devlink_trap_group_get_list *next;
1537 struct devlink_trap_group_get_rsp obj __attribute__ ((aligned (8)));
1538};
1539
1540void devlink_trap_group_get_list_free(struct devlink_trap_group_get_list *rsp);
1541
1542struct devlink_trap_group_get_list *
1543devlink_trap_group_get_dump(struct ynl_sock *ys,
1544 struct devlink_trap_group_get_req_dump *req);
1545
1546/* ============== DEVLINK_CMD_TRAP_POLICER_GET ============== */
1547/* DEVLINK_CMD_TRAP_POLICER_GET - do */
1548struct devlink_trap_policer_get_req {
1549 struct {
1550 __u32 bus_name_len;
1551 __u32 dev_name_len;
1552 __u32 trap_policer_id:1;
1553 } _present;
1554
1555 char *bus_name;
1556 char *dev_name;
1557 __u32 trap_policer_id;
1558};
1559
1560static inline struct devlink_trap_policer_get_req *
1561devlink_trap_policer_get_req_alloc(void)
1562{
1563 return calloc(1, sizeof(struct devlink_trap_policer_get_req));
1564}
1565void
1566devlink_trap_policer_get_req_free(struct devlink_trap_policer_get_req *req);
1567
1568static inline void
1569devlink_trap_policer_get_req_set_bus_name(struct devlink_trap_policer_get_req *req,
1570 const char *bus_name)
1571{
1572 free(req->bus_name);
1573 req->_present.bus_name_len = strlen(bus_name);
1574 req->bus_name = malloc(req->_present.bus_name_len + 1);
1575 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1576 req->bus_name[req->_present.bus_name_len] = 0;
1577}
1578static inline void
1579devlink_trap_policer_get_req_set_dev_name(struct devlink_trap_policer_get_req *req,
1580 const char *dev_name)
1581{
1582 free(req->dev_name);
1583 req->_present.dev_name_len = strlen(dev_name);
1584 req->dev_name = malloc(req->_present.dev_name_len + 1);
1585 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1586 req->dev_name[req->_present.dev_name_len] = 0;
1587}
1588static inline void
1589devlink_trap_policer_get_req_set_trap_policer_id(struct devlink_trap_policer_get_req *req,
1590 __u32 trap_policer_id)
1591{
1592 req->_present.trap_policer_id = 1;
1593 req->trap_policer_id = trap_policer_id;
1594}
1595
1596struct devlink_trap_policer_get_rsp {
1597 struct {
1598 __u32 bus_name_len;
1599 __u32 dev_name_len;
1600 __u32 trap_policer_id:1;
1601 } _present;
1602
1603 char *bus_name;
1604 char *dev_name;
1605 __u32 trap_policer_id;
1606};
1607
1608void
1609devlink_trap_policer_get_rsp_free(struct devlink_trap_policer_get_rsp *rsp);
1610
1611/*
1612 * Get trap policer instances.
1613 */
1614struct devlink_trap_policer_get_rsp *
1615devlink_trap_policer_get(struct ynl_sock *ys,
1616 struct devlink_trap_policer_get_req *req);
1617
1618/* DEVLINK_CMD_TRAP_POLICER_GET - dump */
1619struct devlink_trap_policer_get_req_dump {
1620 struct {
1621 __u32 bus_name_len;
1622 __u32 dev_name_len;
1623 } _present;
1624
1625 char *bus_name;
1626 char *dev_name;
1627};
1628
1629static inline struct devlink_trap_policer_get_req_dump *
1630devlink_trap_policer_get_req_dump_alloc(void)
1631{
1632 return calloc(1, sizeof(struct devlink_trap_policer_get_req_dump));
1633}
1634void
1635devlink_trap_policer_get_req_dump_free(struct devlink_trap_policer_get_req_dump *req);
1636
1637static inline void
1638devlink_trap_policer_get_req_dump_set_bus_name(struct devlink_trap_policer_get_req_dump *req,
1639 const char *bus_name)
1640{
1641 free(req->bus_name);
1642 req->_present.bus_name_len = strlen(bus_name);
1643 req->bus_name = malloc(req->_present.bus_name_len + 1);
1644 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1645 req->bus_name[req->_present.bus_name_len] = 0;
1646}
1647static inline void
1648devlink_trap_policer_get_req_dump_set_dev_name(struct devlink_trap_policer_get_req_dump *req,
1649 const char *dev_name)
1650{
1651 free(req->dev_name);
1652 req->_present.dev_name_len = strlen(dev_name);
1653 req->dev_name = malloc(req->_present.dev_name_len + 1);
1654 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1655 req->dev_name[req->_present.dev_name_len] = 0;
1656}
1657
1658struct devlink_trap_policer_get_list {
1659 struct devlink_trap_policer_get_list *next;
1660 struct devlink_trap_policer_get_rsp obj __attribute__ ((aligned (8)));
1661};
1662
1663void
1664devlink_trap_policer_get_list_free(struct devlink_trap_policer_get_list *rsp);
1665
1666struct devlink_trap_policer_get_list *
1667devlink_trap_policer_get_dump(struct ynl_sock *ys,
1668 struct devlink_trap_policer_get_req_dump *req);
1669
1670/* ============== DEVLINK_CMD_RATE_GET ============== */
1671/* DEVLINK_CMD_RATE_GET - do */
1672struct devlink_rate_get_req {
1673 struct {
1674 __u32 bus_name_len;
1675 __u32 dev_name_len;
1676 __u32 port_index:1;
1677 __u32 rate_node_name_len;
1678 } _present;
1679
1680 char *bus_name;
1681 char *dev_name;
1682 __u32 port_index;
1683 char *rate_node_name;
1684};
1685
1686static inline struct devlink_rate_get_req *devlink_rate_get_req_alloc(void)
1687{
1688 return calloc(1, sizeof(struct devlink_rate_get_req));
1689}
1690void devlink_rate_get_req_free(struct devlink_rate_get_req *req);
1691
1692static inline void
1693devlink_rate_get_req_set_bus_name(struct devlink_rate_get_req *req,
1694 const char *bus_name)
1695{
1696 free(req->bus_name);
1697 req->_present.bus_name_len = strlen(bus_name);
1698 req->bus_name = malloc(req->_present.bus_name_len + 1);
1699 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1700 req->bus_name[req->_present.bus_name_len] = 0;
1701}
1702static inline void
1703devlink_rate_get_req_set_dev_name(struct devlink_rate_get_req *req,
1704 const char *dev_name)
1705{
1706 free(req->dev_name);
1707 req->_present.dev_name_len = strlen(dev_name);
1708 req->dev_name = malloc(req->_present.dev_name_len + 1);
1709 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1710 req->dev_name[req->_present.dev_name_len] = 0;
1711}
1712static inline void
1713devlink_rate_get_req_set_port_index(struct devlink_rate_get_req *req,
1714 __u32 port_index)
1715{
1716 req->_present.port_index = 1;
1717 req->port_index = port_index;
1718}
1719static inline void
1720devlink_rate_get_req_set_rate_node_name(struct devlink_rate_get_req *req,
1721 const char *rate_node_name)
1722{
1723 free(req->rate_node_name);
1724 req->_present.rate_node_name_len = strlen(rate_node_name);
1725 req->rate_node_name = malloc(req->_present.rate_node_name_len + 1);
1726 memcpy(req->rate_node_name, rate_node_name, req->_present.rate_node_name_len);
1727 req->rate_node_name[req->_present.rate_node_name_len] = 0;
1728}
1729
1730struct devlink_rate_get_rsp {
1731 struct {
1732 __u32 bus_name_len;
1733 __u32 dev_name_len;
1734 __u32 port_index:1;
1735 __u32 rate_node_name_len;
1736 } _present;
1737
1738 char *bus_name;
1739 char *dev_name;
1740 __u32 port_index;
1741 char *rate_node_name;
1742};
1743
1744void devlink_rate_get_rsp_free(struct devlink_rate_get_rsp *rsp);
1745
1746/*
1747 * Get rate instances.
1748 */
1749struct devlink_rate_get_rsp *
1750devlink_rate_get(struct ynl_sock *ys, struct devlink_rate_get_req *req);
1751
1752/* DEVLINK_CMD_RATE_GET - dump */
1753struct devlink_rate_get_req_dump {
1754 struct {
1755 __u32 bus_name_len;
1756 __u32 dev_name_len;
1757 } _present;
1758
1759 char *bus_name;
1760 char *dev_name;
1761};
1762
1763static inline struct devlink_rate_get_req_dump *
1764devlink_rate_get_req_dump_alloc(void)
1765{
1766 return calloc(1, sizeof(struct devlink_rate_get_req_dump));
1767}
1768void devlink_rate_get_req_dump_free(struct devlink_rate_get_req_dump *req);
1769
1770static inline void
1771devlink_rate_get_req_dump_set_bus_name(struct devlink_rate_get_req_dump *req,
1772 const char *bus_name)
1773{
1774 free(req->bus_name);
1775 req->_present.bus_name_len = strlen(bus_name);
1776 req->bus_name = malloc(req->_present.bus_name_len + 1);
1777 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1778 req->bus_name[req->_present.bus_name_len] = 0;
1779}
1780static inline void
1781devlink_rate_get_req_dump_set_dev_name(struct devlink_rate_get_req_dump *req,
1782 const char *dev_name)
1783{
1784 free(req->dev_name);
1785 req->_present.dev_name_len = strlen(dev_name);
1786 req->dev_name = malloc(req->_present.dev_name_len + 1);
1787 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1788 req->dev_name[req->_present.dev_name_len] = 0;
1789}
1790
1791struct devlink_rate_get_list {
1792 struct devlink_rate_get_list *next;
1793 struct devlink_rate_get_rsp obj __attribute__ ((aligned (8)));
1794};
1795
1796void devlink_rate_get_list_free(struct devlink_rate_get_list *rsp);
1797
1798struct devlink_rate_get_list *
1799devlink_rate_get_dump(struct ynl_sock *ys,
1800 struct devlink_rate_get_req_dump *req);
1801
1802/* ============== DEVLINK_CMD_LINECARD_GET ============== */
1803/* DEVLINK_CMD_LINECARD_GET - do */
1804struct devlink_linecard_get_req {
1805 struct {
1806 __u32 bus_name_len;
1807 __u32 dev_name_len;
1808 __u32 linecard_index:1;
1809 } _present;
1810
1811 char *bus_name;
1812 char *dev_name;
1813 __u32 linecard_index;
1814};
1815
1816static inline struct devlink_linecard_get_req *
1817devlink_linecard_get_req_alloc(void)
1818{
1819 return calloc(1, sizeof(struct devlink_linecard_get_req));
1820}
1821void devlink_linecard_get_req_free(struct devlink_linecard_get_req *req);
1822
1823static inline void
1824devlink_linecard_get_req_set_bus_name(struct devlink_linecard_get_req *req,
1825 const char *bus_name)
1826{
1827 free(req->bus_name);
1828 req->_present.bus_name_len = strlen(bus_name);
1829 req->bus_name = malloc(req->_present.bus_name_len + 1);
1830 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1831 req->bus_name[req->_present.bus_name_len] = 0;
1832}
1833static inline void
1834devlink_linecard_get_req_set_dev_name(struct devlink_linecard_get_req *req,
1835 const char *dev_name)
1836{
1837 free(req->dev_name);
1838 req->_present.dev_name_len = strlen(dev_name);
1839 req->dev_name = malloc(req->_present.dev_name_len + 1);
1840 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1841 req->dev_name[req->_present.dev_name_len] = 0;
1842}
1843static inline void
1844devlink_linecard_get_req_set_linecard_index(struct devlink_linecard_get_req *req,
1845 __u32 linecard_index)
1846{
1847 req->_present.linecard_index = 1;
1848 req->linecard_index = linecard_index;
1849}
1850
1851struct devlink_linecard_get_rsp {
1852 struct {
1853 __u32 bus_name_len;
1854 __u32 dev_name_len;
1855 __u32 linecard_index:1;
1856 } _present;
1857
1858 char *bus_name;
1859 char *dev_name;
1860 __u32 linecard_index;
1861};
1862
1863void devlink_linecard_get_rsp_free(struct devlink_linecard_get_rsp *rsp);
1864
1865/*
1866 * Get line card instances.
1867 */
1868struct devlink_linecard_get_rsp *
1869devlink_linecard_get(struct ynl_sock *ys, struct devlink_linecard_get_req *req);
1870
1871/* DEVLINK_CMD_LINECARD_GET - dump */
1872struct devlink_linecard_get_req_dump {
1873 struct {
1874 __u32 bus_name_len;
1875 __u32 dev_name_len;
1876 } _present;
1877
1878 char *bus_name;
1879 char *dev_name;
1880};
1881
1882static inline struct devlink_linecard_get_req_dump *
1883devlink_linecard_get_req_dump_alloc(void)
1884{
1885 return calloc(1, sizeof(struct devlink_linecard_get_req_dump));
1886}
1887void
1888devlink_linecard_get_req_dump_free(struct devlink_linecard_get_req_dump *req);
1889
1890static inline void
1891devlink_linecard_get_req_dump_set_bus_name(struct devlink_linecard_get_req_dump *req,
1892 const char *bus_name)
1893{
1894 free(req->bus_name);
1895 req->_present.bus_name_len = strlen(bus_name);
1896 req->bus_name = malloc(req->_present.bus_name_len + 1);
1897 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1898 req->bus_name[req->_present.bus_name_len] = 0;
1899}
1900static inline void
1901devlink_linecard_get_req_dump_set_dev_name(struct devlink_linecard_get_req_dump *req,
1902 const char *dev_name)
1903{
1904 free(req->dev_name);
1905 req->_present.dev_name_len = strlen(dev_name);
1906 req->dev_name = malloc(req->_present.dev_name_len + 1);
1907 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1908 req->dev_name[req->_present.dev_name_len] = 0;
1909}
1910
1911struct devlink_linecard_get_list {
1912 struct devlink_linecard_get_list *next;
1913 struct devlink_linecard_get_rsp obj __attribute__ ((aligned (8)));
1914};
1915
1916void devlink_linecard_get_list_free(struct devlink_linecard_get_list *rsp);
1917
1918struct devlink_linecard_get_list *
1919devlink_linecard_get_dump(struct ynl_sock *ys,
1920 struct devlink_linecard_get_req_dump *req);
1921
1922/* ============== DEVLINK_CMD_SELFTESTS_GET ============== */
1923/* DEVLINK_CMD_SELFTESTS_GET - do */
1924struct devlink_selftests_get_req {
1925 struct {
1926 __u32 bus_name_len;
1927 __u32 dev_name_len;
1928 } _present;
1929
1930 char *bus_name;
1931 char *dev_name;
1932};
1933
1934static inline struct devlink_selftests_get_req *
1935devlink_selftests_get_req_alloc(void)
1936{
1937 return calloc(1, sizeof(struct devlink_selftests_get_req));
1938}
1939void devlink_selftests_get_req_free(struct devlink_selftests_get_req *req);
1940
1941static inline void
1942devlink_selftests_get_req_set_bus_name(struct devlink_selftests_get_req *req,
1943 const char *bus_name)
1944{
1945 free(req->bus_name);
1946 req->_present.bus_name_len = strlen(bus_name);
1947 req->bus_name = malloc(req->_present.bus_name_len + 1);
1948 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
1949 req->bus_name[req->_present.bus_name_len] = 0;
1950}
1951static inline void
1952devlink_selftests_get_req_set_dev_name(struct devlink_selftests_get_req *req,
1953 const char *dev_name)
1954{
1955 free(req->dev_name);
1956 req->_present.dev_name_len = strlen(dev_name);
1957 req->dev_name = malloc(req->_present.dev_name_len + 1);
1958 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
1959 req->dev_name[req->_present.dev_name_len] = 0;
1960}
1961
1962struct devlink_selftests_get_rsp {
1963 struct {
1964 __u32 bus_name_len;
1965 __u32 dev_name_len;
1966 } _present;
1967
1968 char *bus_name;
1969 char *dev_name;
1970};
1971
1972void devlink_selftests_get_rsp_free(struct devlink_selftests_get_rsp *rsp);
1973
1974/*
1975 * Get device selftest instances.
1976 */
1977struct devlink_selftests_get_rsp *
1978devlink_selftests_get(struct ynl_sock *ys,
1979 struct devlink_selftests_get_req *req);
1980
1981/* DEVLINK_CMD_SELFTESTS_GET - dump */
1982struct devlink_selftests_get_list {
1983 struct devlink_selftests_get_list *next;
1984 struct devlink_selftests_get_rsp obj __attribute__ ((aligned (8)));
1985};
1986
1987void devlink_selftests_get_list_free(struct devlink_selftests_get_list *rsp);
1988
1989struct devlink_selftests_get_list *
1990devlink_selftests_get_dump(struct ynl_sock *ys);
1991
1992#endif /* _LINUX_DEVLINK_GEN_H */