]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
route classifier support for multiple actions
authorJamal Hadi Salim <jhs@mojatatu.com>
Mon, 6 Oct 2014 11:30:17 +0000 (07:30 -0400)
committerStephen Hemminger <shemming@brocade.com>
Thu, 9 Oct 2014 15:26:57 +0000 (08:26 -0700)
route can now use the action syntax

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

index 649e0ec2943575b10f046f1993f0d828c1ed21bf..23c4ecc7b8d141c6429a603e0a9340f21848a205 100644 (file)
@@ -28,8 +28,8 @@
 static void explain(void)
 {
        fprintf(stderr, "Usage: ... route [ from REALM | fromif TAG ] [ to REALM ]\n");
-       fprintf(stderr, "                [ flowid CLASSID ] [ police POLICE_SPEC ]\n");
-       fprintf(stderr, "       POLICE_SPEC := ... look at TBF\n");
+       fprintf(stderr, "                [ flowid CLASSID ] [ action ACTION_SPEC ]]\n");
+       fprintf(stderr, "       ACTION_SPEC := ... look at individual actions\n");
        fprintf(stderr, "       CLASSID := X:Y\n");
        fprintf(stderr, "\nNOTE: CLASSID is parsed as hexadecimal input.\n");
 }
@@ -105,6 +105,13 @@ static int route_parse_opt(struct filter_util *qu, char *handle, int argc, char
                                return -1;
                        }
                        continue;
+               } else if (matches(*argv, "action") == 0) {
+                       NEXT_ARG();
+                       if (parse_action(&argc, &argv, TCA_ROUTE4_ACT, n)) {
+                               fprintf(stderr, "Illegal \"action\"\n");
+                               return -1;
+                       }
+                       continue;
                } else if (matches(*argv, "order") == 0) {
                        NEXT_ARG();
                        if (get_u32(&order, *argv, 0)) {
@@ -158,6 +165,8 @@ static int route_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt,
                fprintf(f, "fromif %s", ll_index_to_name(*(int*)RTA_DATA(tb[TCA_ROUTE4_IIF])));
        if (tb[TCA_ROUTE4_POLICE])
                tc_print_police(f, tb[TCA_ROUTE4_POLICE]);
+       if (tb[TCA_ROUTE4_ACT])
+               tc_print_action(f, tb[TCA_ROUTE4_ACT]);
        return 0;
 }