From: Hiroaki SHIMODA Date: Sat, 8 Mar 2014 13:10:03 +0000 (+0900) Subject: htb: Move direct_qlen code part to htb_parse_opt(). X-Git-Tag: v3.14.0~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d4da09e0036107e7c49362b38df220e9a2f7b12;p=thirdparty%2Fiproute2.git htb: Move direct_qlen code part to htb_parse_opt(). 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 Cc: Eric Dumazet --- diff --git a/tc/q_htb.c b/tc/q_htb.c index 1d8c56f2b..7075a4c00 100644 --- a/tc/q_htb.c +++ b/tc/q_htb.c @@ -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))