]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
tc_util: Fix parsing action control with space and slash
authorRoi Dayan <roid@nvidia.com>
Thu, 3 Feb 2022 12:20:46 +0000 (14:20 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Fri, 11 Feb 2022 01:20:42 +0000 (17:20 -0800)
For action police there is an conform-exceed action control
which can be for example "jump 2 / pipe".
The current parsing loop is doing one more iteration than necessary
and results in ok var being 3.

Example filter:

tc filter add dev enp8s0f0_0 ingress protocol ip prio 2 flower \
    verbose action police rate 100mbit burst 12m \
    conform-exceed jump 1 / pipe mirred egress redirect dev enp8s0f0_1 action drop

Before this change the command will fail.
Trying to add another "pipe" before mirred as a workaround for the stopping the loop
in ok var 3 resulting in result2 not being saved and wrong filter.

... conform-exceed jump 1 / pipe pipe mirred ...

Example dump of the action part:
... action order 1:  police 0x1 rate 100Mbit burst 12Mb mtu 2Kb action jump 1 overhead 0b  ...

Fix the behavior by removing redundant case 2 handling, either argc is over or breaking.

Example dump of the action part with the fix:
... action order 1:  police 0x1 rate 100Mbit burst 12Mb mtu 2Kb action jump 1/pipe overhead 0b ...

Signed-off-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
tc/tc_util.c

index 48065897cee777a1f2399161222bb1bf775b725c..b82dbd5dc75df6fcd1bf91a7d4939d61e297bcfb 100644 (file)
@@ -476,7 +476,6 @@ static int parse_action_control_slash_spaces(int *argc_p, char ***argv_p,
                        NEXT_ARG();
                        /* fall-through */
                case 0: /* fall-through */
-               case 2:
                        ret = parse_action_control(&argc, &argv,
                                                   result_p, allow_num);
                        if (ret)