1aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#ifndef _TC_UTIL_H_ 2aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#define _TC_UTIL_H_ 1 3aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 42373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger#define MAX_MSG 16384 5aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <linux/pkt_sched.h> 6aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <linux/pkt_cls.h> 7e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#include <linux/gen_stats.h> 8aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include "tc_core.h" 9aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 106644900d2116a2a397bf0ed26ffd845ca2136b52San Mehat#ifndef MIN 116644900d2116a2a397bf0ed26ffd845ca2136b52San Mehat#define MIN(x,y) ((x)<(y)?(x):(y)) 126644900d2116a2a397bf0ed26ffd845ca2136b52San Mehat#endif 136644900d2116a2a397bf0ed26ffd845ca2136b52San Mehat 145a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger/* This is the deprecated multiqueue interface */ 155a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger#ifndef TCA_PRIO_MAX 165a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemmingerenum 175a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger{ 185a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger TCA_PRIO_UNSPEC, 195a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger TCA_PRIO_MQ, 205a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger __TCA_PRIO_MAX 215a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger}; 225a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger 235a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger#define TCA_PRIO_MAX (__TCA_PRIO_MAX - 1) 245a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger#endif 255a67f8f9d3a7f80a49554fb1ca4e68a1effd5399Stephen Hemminger 26aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerstruct qdisc_util 27aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger{ 282373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger struct qdisc_util *next; 296dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger const char *id; 30aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger int (*parse_qopt)(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n); 31aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger int (*print_qopt)(struct qdisc_util *qu, FILE *f, struct rtattr *opt); 32aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger int (*print_xstats)(struct qdisc_util *qu, FILE *f, struct rtattr *xstats); 33aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 34aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger int (*parse_copt)(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n); 35aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger int (*print_copt)(struct qdisc_util *qu, FILE *f, struct rtattr *opt); 36aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger}; 37aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 38eefcbc72062a235efe391163962f7353dba1af4cjamalextern __u16 f_proto; 39aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerstruct filter_util 40aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger{ 41aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger struct filter_util *next; 42aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger char id[16]; 43ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemminger int (*parse_fopt)(struct filter_util *qu, char *fhandle, int argc, 4499475d054bbef0a41f2741a9577a1bb57cf4f1e7osdl.net!shemminger char **argv, struct nlmsghdr *n); 45aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger int (*print_fopt)(struct filter_util *qu, FILE *f, struct rtattr *opt, __u32 fhandle); 46aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger}; 47aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 482373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemmingerstruct action_util 492373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger{ 502373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger struct action_util *next; 512373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger char id[16]; 52ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemminger int (*parse_aopt)(struct action_util *a, int *argc, char ***argv, 5399475d054bbef0a41f2741a9577a1bb57cf4f1e7osdl.net!shemminger int code, struct nlmsghdr *n); 542373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger int (*print_aopt)(struct action_util *au, FILE *f, struct rtattr *opt); 552373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger int (*print_xstats)(struct action_util *au, FILE *f, struct rtattr *xstats); 562373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemminger}; 57aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 58aa27f88c8444ad6a87ebb563d6ffacb4fe95d87cStephen Hemmingerextern const char *get_tc_lib(void); 59aa27f88c8444ad6a87ebb563d6ffacb4fe95d87cStephen Hemminger 604094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemmingerextern struct qdisc_util *get_qdisc_kind(const char *str); 614094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemmingerextern struct filter_util *get_filter_kind(const char *str); 62aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 634094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemmingerextern int get_qdisc_handle(__u32 *h, const char *str); 644094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemmingerextern int get_rate(unsigned *rate, const char *str); 654094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemmingerextern int get_size(unsigned *size, const char *str); 66aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int get_size_and_cell(unsigned *size, int *cell_log, char *str); 678f34caafbdbc8f87d228d577872591e138caadb1Patrick McHardyextern int get_time(unsigned *time, const char *str); 68292f29b42c3444375b5ae7086484c99da7129d94Jesper Dangaard Brouerextern int get_linklayer(unsigned *val, const char *arg); 69292f29b42c3444375b5ae7086484c99da7129d94Jesper Dangaard Brouer 709615dc1da4ce4cefff0cf605eab800c62a51e7ffosdl.net!shemmingerextern void print_rate(char *buf, int len, __u32 rate); 719615dc1da4ce4cefff0cf605eab800c62a51e7ffosdl.net!shemmingerextern void print_size(char *buf, int len, __u32 size); 729615dc1da4ce4cefff0cf605eab800c62a51e7ffosdl.net!shemmingerextern void print_qdisc_handle(char *buf, int len, __u32 h); 738f34caafbdbc8f87d228d577872591e138caadb1Patrick McHardyextern void print_time(char *buf, int len, __u32 time); 74839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnaextern void print_linklayer(char *buf, int len, unsigned linklayer); 75aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern char * sprint_rate(__u32 rate, char *buf); 76aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern char * sprint_size(__u32 size, char *buf); 77aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern char * sprint_qdisc_handle(__u32 h, char *buf); 78aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern char * sprint_tc_classid(__u32 h, char *buf); 798f34caafbdbc8f87d228d577872591e138caadb1Patrick McHardyextern char * sprint_time(__u32 time, char *buf); 80bd29e35d9de9dc0b9015dd3a178ee2c716ce8301Patrick McHardyextern char * sprint_ticks(__u32 ticks, char *buf); 81839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnaextern char * sprint_linklayer(unsigned linklayer, char *buf); 82aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 83e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgrafextern void print_tcstats_attr(FILE *fp, struct rtattr *tb[], char *prefix, struct rtattr **xstats); 84e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgrafextern void print_tcstats2_attr(FILE *fp, struct rtattr *rta, char *prefix, struct rtattr **xstats); 85aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 864094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemmingerextern int get_tc_classid(__u32 *h, const char *str); 87aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int print_tc_classid(char *buf, int len, __u32 h); 88aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern char * sprint_tc_classid(__u32 h, char *buf); 89aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 90aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int tc_print_police(FILE *f, struct rtattr *tb); 91aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int parse_police(int *, char ***, int, struct nlmsghdr *); 92aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 932373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemmingerextern char *action_n2a(int action, char *buf, int len); 942373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemmingerextern int action_a2n(char *arg, int *result); 952373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemmingerextern int act_parse_police(struct action_util *a,int *, char ***, int, struct nlmsghdr *); 96ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemmingerextern int print_police(struct action_util *a, FILE *f, 976dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger struct rtattr *tb); 98ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemmingerextern int police_print_xstats(struct action_util *a,FILE *f, 996dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger struct rtattr *tb); 1006dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int tc_print_action(FILE *f, const struct rtattr *tb); 1016dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int tc_print_ipt(FILE *f, const struct rtattr *tb); 1022373fde9b0ba14c1758290a68332f1af9882abc0osdl.net!shemmingerextern int parse_action(int *, char ***, int, struct nlmsghdr *); 1036dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern void print_tm(FILE *f, const struct tcf_t *tm); 104aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 105aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#endif 106