]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - tc/tc_class.c
q_cake: properly print memlimit
[mirror_iproute2.git] / tc / tc_class.c
index e1ca29cfa9a4305bf0422ccaf5c1de0a6916b670..39bea9712dda7bcb5c8724081a31b72a261e8e48 100644 (file)
@@ -43,14 +43,15 @@ static void usage(void);
 
 static void usage(void)
 {
-       fprintf(stderr, "Usage: tc class [ add | del | change | replace | show ] dev STRING\n");
-       fprintf(stderr, "       [ classid CLASSID ] [ root | parent CLASSID ]\n");
-       fprintf(stderr, "       [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n");
-       fprintf(stderr, "\n");
-       fprintf(stderr, "       tc class show [ dev STRING ] [ root | parent CLASSID ]\n");
-       fprintf(stderr, "Where:\n");
-       fprintf(stderr, "QDISC_KIND := { prio | cbq | etc. }\n");
-       fprintf(stderr, "OPTIONS := ... try tc class add <desired QDISC_KIND> help\n");
+       fprintf(stderr,
+               "Usage: tc class [ add | del | change | replace | show ] dev STRING\n"
+               "       [ classid CLASSID ] [ root | parent CLASSID ]\n"
+               "       [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n"
+               "\n"
+               "       tc class show [ dev STRING ] [ root | parent CLASSID ]\n"
+               "Where:\n"
+               "QDISC_KIND := { prio | cbq | etc. }\n"
+               "OPTIONS := ... try tc class add <desired QDISC_KIND> help\n");
 }
 
 static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -153,9 +154,9 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
        return 0;
 }
 
-int filter_ifindex;
-__u32 filter_qdisc;
-__u32 filter_classid;
+static int filter_ifindex;
+static __u32 filter_qdisc;
+static __u32 filter_classid;
 
 static void graph_node_add(__u32 parent_id, __u32 id, void *data,
                int len)
@@ -218,7 +219,7 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
        char cls_id_str[256] = {};
        struct rtattr *tb[TCA_MAX + 1];
        struct qdisc_util *q;
-       char str[100] = {};
+       char str[300] = {};
 
        hlist_for_each_safe(n, tmp_cls, root_list) {
                struct hlist_node *c, *tmp_chld;
@@ -241,11 +242,12 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
                graph_indent(buf, cls, 0, 0);
 
                print_tc_classid(cls_id_str, sizeof(cls_id_str), cls->id);
-               sprintf(str, "+---(%s)", cls_id_str);
+               snprintf(str, sizeof(str),
+                        "+---(%s)", cls_id_str);
                strcat(buf, str);
 
-               parse_rtattr(tb, TCA_MAX, (struct rtattr *)cls->data,
-                               cls->data_len);
+               parse_rtattr_flags(tb, TCA_MAX, (struct rtattr *)cls->data,
+                                  cls->data_len, NLA_F_NESTED);
 
                if (tb[TCA_KIND] == NULL) {
                        strcat(buf, " [unknown qdisc kind] ");
@@ -295,8 +297,7 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
        }
 }
 
-int print_class(const struct sockaddr_nl *who,
-                      struct nlmsghdr *n, void *arg)
+int print_class(struct nlmsghdr *n, void *arg)
 {
        FILE *fp = (FILE *)arg;
        struct tcmsg *t = NLMSG_DATA(n);
@@ -326,7 +327,7 @@ int print_class(const struct sockaddr_nl *who,
        if (filter_classid && t->tcm_handle != filter_classid)
                return 0;
 
-       parse_rtattr(tb, TCA_MAX, TCA_RTA(t), len);
+       parse_rtattr_flags(tb, TCA_MAX, TCA_RTA(t), len, NLA_F_NESTED);
 
        if (tb[TCA_KIND] == NULL) {
                fprintf(stderr, "print_class: NULL kind\n");