]>
git.proxmox.com Git - mirror_iproute2.git/blob - tc/tc_util.h
1 /* SPDX-License-Identifier: GPL-2.0 */
10 #include <linux/pkt_sched.h>
11 #include <linux/pkt_cls.h>
12 #include <linux/gen_stats.h>
15 #include "json_print.h"
17 /* This is the deprecated multiqueue interface */
26 #define TCA_PRIO_MAX (__TCA_PRIO_MAX - 1)
29 #define FILTER_NAMESZ 16
32 struct qdisc_util
*next
;
34 int (*parse_qopt
)(struct qdisc_util
*qu
, int argc
,
35 char **argv
, struct nlmsghdr
*n
, const char *dev
);
36 int (*print_qopt
)(struct qdisc_util
*qu
,
37 FILE *f
, struct rtattr
*opt
);
38 int (*print_xstats
)(struct qdisc_util
*qu
,
39 FILE *f
, struct rtattr
*xstats
);
41 int (*parse_copt
)(struct qdisc_util
*qu
, int argc
,
42 char **argv
, struct nlmsghdr
*n
, const char *dev
);
43 int (*print_copt
)(struct qdisc_util
*qu
, FILE *f
, struct rtattr
*opt
);
44 int (*has_block
)(struct qdisc_util
*qu
, struct rtattr
*opt
, __u32 block_idx
, bool *p_has
);
49 struct filter_util
*next
;
50 char id
[FILTER_NAMESZ
];
51 int (*parse_fopt
)(struct filter_util
*qu
, char *fhandle
,
52 int argc
, char **argv
, struct nlmsghdr
*n
);
53 int (*print_fopt
)(struct filter_util
*qu
,
54 FILE *f
, struct rtattr
*opt
, __u32 fhandle
);
58 struct action_util
*next
;
59 char id
[FILTER_NAMESZ
];
60 int (*parse_aopt
)(struct action_util
*a
, int *argc
,
61 char ***argv
, int code
, struct nlmsghdr
*n
);
62 int (*print_aopt
)(struct action_util
*au
, FILE *f
, struct rtattr
*opt
);
63 int (*print_xstats
)(struct action_util
*au
,
64 FILE *f
, struct rtattr
*xstats
);
68 struct exec_util
*next
;
69 char id
[FILTER_NAMESZ
];
70 int (*parse_eopt
)(struct exec_util
*eu
, int argc
, char **argv
);
73 const char *get_tc_lib(void);
75 struct qdisc_util
*get_qdisc_kind(const char *str
);
76 struct filter_util
*get_filter_kind(const char *str
);
78 int get_qdisc_handle(__u32
*h
, const char *str
);
79 int get_rate(unsigned int *rate
, const char *str
);
80 int get_percent_rate(unsigned int *rate
, const char *str
, const char *dev
);
81 int get_rate64(__u64
*rate
, const char *str
);
82 int get_percent_rate64(__u64
*rate
, const char *str
, const char *dev
);
83 int get_size(unsigned int *size
, const char *str
);
84 int get_size_and_cell(unsigned int *size
, int *cell_log
, char *str
);
85 int get_linklayer(unsigned int *val
, const char *arg
);
87 void print_rate(char *buf
, int len
, __u64 rate
);
88 void print_devname(enum output_type type
, int ifindex
);
90 char *sprint_rate(__u64 rate
, char *buf
);
91 char *sprint_size(__u32 size
, char *buf
);
92 char *sprint_tc_classid(__u32 h
, char *buf
);
93 char *sprint_ticks(__u32 ticks
, char *buf
);
94 char *sprint_linklayer(unsigned int linklayer
, char *buf
);
96 void print_tcstats_attr(FILE *fp
, struct rtattr
*tb
[],
97 char *prefix
, struct rtattr
**xstats
);
98 void print_tcstats2_attr(FILE *fp
, struct rtattr
*rta
,
99 char *prefix
, struct rtattr
**xstats
);
101 int get_tc_classid(__u32
*h
, const char *str
);
102 int print_tc_classid(char *buf
, int len
, __u32 h
);
103 char *sprint_tc_classid(__u32 h
, char *buf
);
105 int tc_print_police(FILE *f
, struct rtattr
*tb
);
106 int parse_percent(double *val
, const char *str
);
107 int parse_police(int *argc_p
, char ***argv_p
, int tca_id
, struct nlmsghdr
*n
);
109 int parse_action_control(int *argc_p
, char ***argv_p
,
110 int *result_p
, bool allow_num
);
111 void parse_action_control_dflt(int *argc_p
, char ***argv_p
,
112 int *result_p
, bool allow_num
,
114 int parse_action_control_slash(int *argc_p
, char ***argv_p
,
115 int *result1_p
, int *result2_p
, bool allow_num
);
116 void print_action_control(FILE *f
, const char *prefix
,
117 int action
, const char *suffix
);
118 int police_print_xstats(struct action_util
*a
, FILE *f
, struct rtattr
*tb
);
119 int tc_print_action(FILE *f
, const struct rtattr
*tb
, unsigned short tot_acts
);
120 int tc_print_ipt(FILE *f
, const struct rtattr
*tb
);
121 int parse_action(int *argc_p
, char ***argv_p
, int tca_id
, struct nlmsghdr
*n
);
122 void print_tm(FILE *f
, const struct tcf_t
*tm
);
123 int prio_print_opt(struct qdisc_util
*qu
, FILE *f
, struct rtattr
*opt
);
125 int cls_names_init(char *path
);
126 void cls_names_uninit(void);
128 int action_a2n(char *arg
, int *result
, bool allow_num
);
130 bool tc_qdisc_block_exists(__u32 block_index
);
132 void print_masked_u32(const char *name
, struct rtattr
*attr
,
133 struct rtattr
*mask_attr
, bool newline
);
134 void print_masked_u16(const char *name
, struct rtattr
*attr
,
135 struct rtattr
*mask_attr
, bool newline
);
136 void print_masked_u8(const char *name
, struct rtattr
*attr
,
137 struct rtattr
*mask_attr
, bool newline
);
138 void print_masked_be16(const char *name
, struct rtattr
*attr
,
139 struct rtattr
*mask_attr
, bool newline
);