]> git.proxmox.com Git - mirror_iproute2.git/blob - dcb/dcb.h
dcb: Generalize dcb_get_attribute()
[mirror_iproute2.git] / dcb / dcb.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __DCB_H__
3 #define __DCB_H__ 1
4
5 #include <libmnl/libmnl.h>
6 #include <stdbool.h>
7 #include <stddef.h>
8
9 /* dcb.c */
10
11 struct dcb {
12 char *buf;
13 struct mnl_socket *nl;
14 bool json_output;
15 bool stats;
16 bool use_iec;
17 };
18
19 int dcb_parse_mapping(const char *what_key, __u32 key, __u32 max_key,
20 const char *what_value, __u64 value, __u64 max_value,
21 void (*set_array)(__u32 index, __u64 value, void *data),
22 void *set_array_data);
23 int dcb_cmd_parse_dev(struct dcb *dcb, int argc, char **argv,
24 int (*and_then)(struct dcb *dcb, const char *dev,
25 int argc, char **argv),
26 void (*help)(void));
27
28 void dcb_set_u8(__u32 key, __u64 value, void *data);
29 void dcb_set_u32(__u32 key, __u64 value, void *data);
30 void dcb_set_u64(__u32 key, __u64 value, void *data);
31
32 int dcb_get_attribute(struct dcb *dcb, const char *dev, int attr,
33 void *data, size_t data_len);
34 int dcb_set_attribute(struct dcb *dcb, const char *dev, int attr,
35 const void *data, size_t data_len);
36 int dcb_get_attribute_va(struct dcb *dcb, const char *dev, int attr,
37 void **payload_p, __u16 *payload_len_p);
38 int dcb_set_attribute_va(struct dcb *dcb, int command, const char *dev,
39 int (*cb)(struct dcb *dcb, struct nlmsghdr *nlh, void *data),
40 void *data);
41 int dcb_get_attribute_bare(struct dcb *dcb, int cmd, const char *dev, int attr,
42 void **payload_p, __u16 *payload_len_p);
43 int dcb_set_attribute_bare(struct dcb *dcb, int command, const char *dev,
44 int attr, const void *data, size_t data_len,
45 int response_attr);
46
47 void dcb_print_named_array(const char *json_name, const char *fp_name,
48 const __u8 *array, size_t size,
49 void (*print_array)(const __u8 *, size_t));
50 void dcb_print_array_u8(const __u8 *array, size_t size);
51 void dcb_print_array_u64(const __u64 *array, size_t size);
52 void dcb_print_array_on_off(const __u8 *array, size_t size);
53 void dcb_print_array_kw(const __u8 *array, size_t array_size,
54 const char *const kw[], size_t kw_size);
55
56 /* dcb_buffer.c */
57
58 int dcb_cmd_buffer(struct dcb *dcb, int argc, char **argv);
59
60 /* dcb_ets.c */
61
62 int dcb_cmd_ets(struct dcb *dcb, int argc, char **argv);
63
64 /* dcb_maxrate.c */
65
66 int dcb_cmd_maxrate(struct dcb *dcb, int argc, char **argv);
67
68 /* dcb_pfc.c */
69
70 int dcb_cmd_pfc(struct dcb *dcb, int argc, char **argv);
71
72 #endif /* __DCB_H__ */