]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
tc: m_bpf: fix next arg selection after tc opcode
authorDaniel Borkmann <daniel@iogearbox.net>
Wed, 18 Mar 2015 09:13:34 +0000 (10:13 +0100)
committerStephen Hemminger <shemming@brocade.com>
Tue, 24 Mar 2015 22:39:53 +0000 (15:39 -0700)
Next argument after the tc opcode/verdict is optional, using NEXT_ARG()
requires to have another argument after that one otherwise tc will bail
out. Therefore, we need to advance to the next argument manually as done
elsewhere.

Fixes: 86ab59a6660f ("tc: add support for BPF based actions")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Pirko <jiri@resnulli.us>
tc/m_bpf.c

index 3b864f9d997ea3e1bf440c5591cb4dc36abdea57..bc6cc47ad9e5638dc1d4c0f51c66cb0d487774cc 100644 (file)
@@ -89,20 +89,25 @@ static int parse_bpf(struct action_util *a, int *argc_p, char ***argv_p,
        if (argc) {
                if (matches(*argv, "reclassify") == 0) {
                        parm.action = TC_ACT_RECLASSIFY;
-                       NEXT_ARG();
+                       argc--;
+                       argv++;
                } else if (matches(*argv, "pipe") == 0) {
                        parm.action = TC_ACT_PIPE;
-                       NEXT_ARG();
+                       argc--;
+                       argv++;
                } else if (matches(*argv, "drop") == 0 ||
                           matches(*argv, "shot") == 0) {
                        parm.action = TC_ACT_SHOT;
-                       NEXT_ARG();
+                       argc--;
+                       argv++;
                } else if (matches(*argv, "continue") == 0) {
                        parm.action = TC_ACT_UNSPEC;
-                       NEXT_ARG();
+                       argc--;
+                       argv++;
                } else if (matches(*argv, "pass") == 0) {
                        parm.action = TC_ACT_OK;
-                       NEXT_ARG();
+                       argc--;
+                       argv++;
                }
        }