diff --git a/tc/f_route.c b/tc/f_route.c index 649e0ec2..23c4ecc7 100644 --- a/tc/f_route.c +++ b/tc/f_route.c @@ -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; }