]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
actions: Get vlan action to work in pipeline
authorJamal Hadi Salim <jhs@mojatatu.com>
Sun, 11 Jan 2015 14:31:30 +0000 (09:31 -0500)
committerStephen Hemminger <shemming@brocade.com>
Wed, 14 Jan 2015 01:22:44 +0000 (17:22 -0800)
When specified in a graph such as:
action vlan ... action foobar
the vlan action chewed more than it can swallow

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
tc/m_vlan.c

index 171d26839931fe5bb96a55efd4f6093774a74ed7..32db5ed5b107b1ffec2812eaf3a638d36356fdb0 100644 (file)
@@ -103,20 +103,25 @@ static int parse_vlan(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++;
                }
        }
 
@@ -198,6 +203,7 @@ static int print_vlan(struct action_util *au, FILE *f, struct rtattr *arg)
                }
                break;
        }
+       fprintf(f, " %s", action_n2a(parm->action, b1, sizeof (b1)));
 
        fprintf(f, "\n\t index %d ref %d bind %d", parm->index, parm->refcnt,
                parm->bindcnt);