1
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
10
11struct dcb {
12 char *buf;
13 struct mnl_socket *nl;
14 bool json_output;
15 bool stats;
16 bool use_iec;
17 bool numeric;
18};
19
20int dcb_parse_mapping(const char *what_key, __u32 key, __u32 max_key,
21 const char *what_value, __u64 value, __u64 max_value,
22 void (*set_array)(__u32 index, __u64 value, void *data),
23 void *set_array_data);
24int dcb_cmd_parse_dev(struct dcb *dcb, int argc, char **argv,
25 int (*and_then)(struct dcb *dcb, const char *dev,
26 int argc, char **argv),
27 void (*help)(void));
28
29void dcb_set_u8(__u32 key, __u64 value, void *data);
30void dcb_set_u32(__u32 key, __u64 value, void *data);
31void dcb_set_u64(__u32 key, __u64 value, void *data);
32
33int dcb_get_attribute(struct dcb *dcb, const char *dev, int attr,
34 void *data, size_t data_len);
35int dcb_set_attribute(struct dcb *dcb, const char *dev, int attr,
36 const void *data, size_t data_len);
37int dcb_get_attribute_va(struct dcb *dcb, const char *dev, int attr,
38 void **payload_p, __u16 *payload_len_p);
39int dcb_set_attribute_va(struct dcb *dcb, int command, const char *dev,
40 int (*cb)(struct dcb *dcb, struct nlmsghdr *nlh, void *data),
41 void *data);
42int dcb_get_attribute_bare(struct dcb *dcb, int cmd, const char *dev, int attr,
43 void **payload_p, __u16 *payload_len_p);
44int dcb_set_attribute_bare(struct dcb *dcb, int command, const char *dev,
45 int attr, const void *data, size_t data_len,
46 int response_attr);
47
48void dcb_print_named_array(const char *json_name, const char *fp_name,
49 const __u8 *array, size_t size,
50 void (*print_array)(const __u8 *, size_t));
51void dcb_print_array_u8(const __u8 *array, size_t size);
52void dcb_print_array_u64(const __u64 *array, size_t size);
53void dcb_print_array_on_off(const __u8 *array, size_t size);
54void dcb_print_array_kw(const __u8 *array, size_t array_size,
55 const char *const kw[], size_t kw_size);
56
57
58
59int dcb_cmd_app(struct dcb *dcb, int argc, char **argv);
60
61
62
63int dcb_cmd_buffer(struct dcb *dcb, int argc, char **argv);
64
65
66
67int dcb_cmd_dcbx(struct dcb *dcb, int argc, char **argv);
68
69
70
71int dcb_cmd_ets(struct dcb *dcb, int argc, char **argv);
72
73
74
75int dcb_cmd_maxrate(struct dcb *dcb, int argc, char **argv);
76
77
78
79int dcb_cmd_pfc(struct dcb *dcb, int argc, char **argv);
80
81#endif
82