]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
tc: fill in handle before checking argc
authorWANG Cong <xiyou.wangcong@gmail.com>
Tue, 5 May 2015 22:30:20 +0000 (15:30 -0700)
committerStephen Hemminger <shemming@brocade.com>
Mon, 11 May 2015 16:13:20 +0000 (09:13 -0700)
When deleting a specific basic filter with handle,
tc command always ignores the 'handle' option, so
tcm_handle is always 0 and kernel deletes all filters
in the selected group. This is wrong, we should respect
'handle' in cmdline.

Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
tc/f_basic.c

index 1c33ca3d3f065d71370613ddde630997e908668c..4adf1d220bebe28d5f65f5381c57203acde530b9 100644 (file)
@@ -43,9 +43,6 @@ static int basic_parse_opt(struct filter_util *qu, char *handle,
        struct rtattr *tail;
        long h = 0;
 
-       if (argc == 0)
-               return 0;
-
        if (handle) {
                h = strtol(handle, NULL, 0);
                if (h == LONG_MIN || h == LONG_MAX) {
@@ -54,9 +51,11 @@ static int basic_parse_opt(struct filter_util *qu, char *handle,
                        return -1;
                }
        }
-
        t->tcm_handle = h;
 
+       if (argc == 0)
+               return 0;
+
        tail = (struct rtattr*)(((void*)n)+NLMSG_ALIGN(n->nlmsg_len));
        addattr_l(n, MAX_MSG, TCA_OPTIONS, NULL, 0);