]>
git.proxmox.com Git - mirror_iproute2.git/blob - tc/tc_util.h
1 /* SPDX-License-Identifier: GPL-2.0 */
9 #include <linux/pkt_sched.h>
10 #include <linux/pkt_cls.h>
11 #include <linux/gen_stats.h>
14 #include "json_print.h"
16 /* This is the deprecated multiqueue interface */
25 #define TCA_PRIO_MAX (__TCA_PRIO_MAX - 1)
28 #define FILTER_NAMESZ 16
31 struct qdisc_util
*next
;
33 int (*parse_qopt
)(struct qdisc_util
*qu
, int argc
,
34 char **argv
, struct nlmsghdr
*n
, const char *dev
);
35 int (*print_qopt
)(struct qdisc_util
*qu
,
36 FILE *f
, struct rtattr
*opt
);
37 int (*print_xstats
)(struct qdisc_util
*qu
,
38 FILE *f
, struct rtattr
*xstats
);
40 int (*parse_copt
)(struct qdisc_util
*qu
, int argc
,
41 char **argv
, struct nlmsghdr
*n
, const char *dev
);
42 int (*print_copt
)(struct qdisc_util
*qu
, FILE *f
, struct rtattr
*opt
);
47 struct filter_util
*next
;
48 char id
[FILTER_NAMESZ
];
49 int (*parse_fopt
)(struct filter_util
*qu
, char *fhandle
,
50 int argc
, char **argv
, struct nlmsghdr
*n
);
51 int (*print_fopt
)(struct filter_util
*qu
,
52 FILE *f
, struct rtattr
*opt
, __u32 fhandle
);
56 struct action_util
*next
;
57 char id
[FILTER_NAMESZ
];
58 int (*parse_aopt
)(struct action_util
*a
, int *argc
,
59 char ***argv
, int code
, struct nlmsghdr
*n
);
60 int (*print_aopt
)(struct action_util
*au
, FILE *f
, struct rtattr
*opt
);
61 int (*print_xstats
)(struct action_util
*au
,
62 FILE *f
, struct rtattr
*xstats
);
66 struct exec_util
*next
;
67 char id
[FILTER_NAMESZ
];
68 int (*parse_eopt
)(struct exec_util
*eu
, int argc
, char **argv
);
71 const char *get_tc_lib(void);
73 struct qdisc_util
*get_qdisc_kind(const char *str
);
74 struct filter_util
*get_filter_kind(const char *str
);
76 int parse_percent_rate(char *rate
, const char *str
, const char *dev
);
77 int get_qdisc_handle(__u32
*h
, const char *str
);
78 int get_rate(unsigned int *rate
, const char *str
);
79 int get_percent_rate(unsigned int *rate
, const char *str
, const char *dev
);
80 int get_rate64(__u64
*rate
, const char *str
);
81 int get_percent_rate64(__u64
*rate
, const char *str
, const char *dev
);
82 int get_size(unsigned int *size
, const char *str
);
83 int get_size_and_cell(unsigned int *size
, int *cell_log
, char *str
);
84 int get_time(unsigned int *time
, const 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_size(char *buf
, int len
, __u32 size
);
89 void print_qdisc_handle(char *buf
, int len
, __u32 h
);
90 void print_time(char *buf
, int len
, __u32 time
);
91 void print_linklayer(char *buf
, int len
, unsigned int linklayer
);
93 char *sprint_rate(__u64 rate
, char *buf
);
94 char *sprint_size(__u32 size
, char *buf
);
95 char *sprint_qdisc_handle(__u32 h
, char *buf
);
96 char *sprint_tc_classid(__u32 h
, char *buf
);
97 char *sprint_time(__u32 time
, char *buf
);
98 char *sprint_ticks(__u32 ticks
, char *buf
);
99 char *sprint_linklayer(unsigned int linklayer
, char *buf
);
101 void print_tcstats_attr(FILE *fp
, struct rtattr
*tb
[],
102 char *prefix
, struct rtattr
**xstats
);
103 void print_tcstats2_attr(FILE *fp
, struct rtattr
*rta
,
104 char *prefix
, struct rtattr
**xstats
);
106 int get_tc_classid(__u32
*h
, const char *str
);
107 int print_tc_classid(char *buf
, int len
, __u32 h
);
108 char *sprint_tc_classid(__u32 h
, char *buf
);
110 int tc_print_police(FILE *f
, struct rtattr
*tb
);
111 int parse_police(int *argc_p
, char ***argv_p
, int tca_id
, struct nlmsghdr
*n
);
113 int parse_action_control(int *argc_p
, char ***argv_p
,
114 int *result_p
, bool allow_num
);
115 void parse_action_control_dflt(int *argc_p
, char ***argv_p
,
116 int *result_p
, bool allow_num
,
118 int parse_action_control_slash(int *argc_p
, char ***argv_p
,
119 int *result1_p
, int *result2_p
, bool allow_num
);
120 void print_action_control(FILE *f
, const char *prefix
,
121 int action
, const char *suffix
);
122 int act_parse_police(struct action_util
*a
, int *argc_p
,
123 char ***argv_p
, int tca_id
, struct nlmsghdr
*n
);
124 int print_police(struct action_util
*a
, FILE *f
, struct rtattr
*tb
);
125 int police_print_xstats(struct action_util
*a
, FILE *f
, struct rtattr
*tb
);
126 int tc_print_action(FILE *f
, const struct rtattr
*tb
, unsigned short tot_acts
);
127 int tc_print_ipt(FILE *f
, const struct rtattr
*tb
);
128 int parse_action(int *argc_p
, char ***argv_p
, int tca_id
, struct nlmsghdr
*n
);
129 void print_tm(FILE *f
, const struct tcf_t
*tm
);
130 int prio_print_opt(struct qdisc_util
*qu
, FILE *f
, struct rtattr
*opt
);
132 int cls_names_init(char *path
);
133 void cls_names_uninit(void);