]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
htb: Move direct_qlen code part to htb_parse_opt().
authorHiroaki SHIMODA <shimoda.hiroaki@gmail.com>
Sat, 8 Mar 2014 13:10:03 +0000 (22:10 +0900)
committerStephen Hemminger <stephen@networkplumber.org>
Fri, 21 Mar 2014 21:20:06 +0000 (14:20 -0700)
The direct_qlen command option is used with qdisc operation.
It happened to be implemented in htb_parse_class_opt() which is called
with class operation.

Signed-off-by: Hiroaki SHIMODA <shimoda.hiroaki@gmail.com>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
tc/q_htb.c

index 1d8c56f2bf079556cfd7870a80b27e9871ed4c3f..7075a4c00c22e5578be541c2d384282673c98fe8 100644 (file)
@@ -62,6 +62,7 @@ static void explain1(char *arg)
 
 static int htb_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n)
 {
+       unsigned int direct_qlen = ~0U;
        struct tc_htb_glob opt;
        struct rtattr *tail;
        unsigned i; char *p;
@@ -86,6 +87,11 @@ static int htb_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nl
                                if (*p<'0' || *p>'3') break;
                                opt.debug |= (*p-'0')<<(2*i);
                        }
+               } else if (matches(*argv, "direct_qlen") == 0) {
+                       NEXT_ARG();
+                       if (get_u32(&direct_qlen, *argv, 10)) {
+                               explain1("direct_qlen"); return -1;
+                       }
                } else {
                        fprintf(stderr, "What is \"%s\"?\n", *argv);
                        explain();
@@ -96,6 +102,9 @@ static int htb_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nl
        tail = NLMSG_TAIL(n);
        addattr_l(n, 1024, TCA_OPTIONS, NULL, 0);
        addattr_l(n, 2024, TCA_HTB_INIT, &opt, NLMSG_ALIGN(sizeof(opt)));
+       if (direct_qlen != ~0U)
+               addattr_l(n, 2024, TCA_HTB_DIRECT_QLEN,
+                         &direct_qlen, sizeof(direct_qlen));
        tail->rta_len = (void *) NLMSG_TAIL(n) - (void *) tail;
        return 0;
 }
@@ -110,7 +119,6 @@ static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, str
        unsigned mtu;
        unsigned short mpu = 0;
        unsigned short overhead = 0;
-       unsigned int direct_qlen = ~0U;
        unsigned int linklayer  = LINKLAYER_ETHERNET; /* Assume ethernet */
        struct rtattr *tail;
        __u64 ceil64 = 0, rate64 = 0;
@@ -129,11 +137,6 @@ static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, str
                        if (get_u32(&mtu, *argv, 10)) {
                                explain1("mtu"); return -1;
                        }
-               } else if (matches(*argv, "direct_qlen") == 0) {
-                       NEXT_ARG();
-                       if (get_u32(&direct_qlen, *argv, 10)) {
-                               explain1("direct_qlen"); return -1;
-                       }
                } else if (matches(*argv, "mpu") == 0) {
                        NEXT_ARG();
                        if (get_u16(&mpu, *argv, 10)) {
@@ -245,9 +248,6 @@ static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, str
        opt.cbuffer = tc_calc_xmittime(ceil64, cbuffer);
 
        tail = NLMSG_TAIL(n);
-       if (direct_qlen != ~0U)
-               addattr_l(n, 1024, TCA_HTB_DIRECT_QLEN,
-                         &direct_qlen, sizeof(direct_qlen));
        addattr_l(n, 1024, TCA_OPTIONS, NULL, 0);
 
        if (rate64 >= (1ULL << 32))