tc: don't ignore ok as an action branch
This is what used to happen before:
tc filter add dev tap1 parent ffff: protocol 0xfefe prio 10 \
u32 match u32 0 0 flowid 1:16 \
action ife decode allow mark ok
tc -s filter ls dev tap1 parent ffff:
filter protocol [65278] pref 10 u32
filter protocol [65278] pref 10 u32 fh 800: ht divisor 1
filter protocol [65278] pref 10 u32 fh 800::800 order 2048 key ht 800
bkt 0 flowid 1:16
match 00000000/00000000 at 0
action order 1: ife decode action pipe
index 2 ref 1 bind 1 installed 4 sec used 4 sec
type: 0x0
Metadata: allow mark
Action statistics:
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
action order 2: gact action pass
random type none pass val 0
index 1 ref 1 bind 1 installed 4 sec used 4 sec
Action statistics:
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Note the extra action added at the end..
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
This commit is contained in:
parent
d3e511223f
commit
43726b750a
|
|
@ -99,7 +99,8 @@ parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
|
|||
sel.action = TC_ACT_UNSPEC;
|
||||
argc--;
|
||||
argv++;
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
sel.action = TC_ACT_OK;
|
||||
argc--;
|
||||
argv++;
|
||||
|
|
|
|||
|
|
@ -140,7 +140,8 @@ parse_csum(struct action_util *a, int *argc_p,
|
|||
sel.action = TC_ACT_UNSPEC;
|
||||
argc--;
|
||||
argv++;
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
sel.action = TC_ACT_OK;
|
||||
argc--;
|
||||
argv++;
|
||||
|
|
|
|||
|
|
@ -167,7 +167,8 @@ static int parse_ife(struct action_util *a, int *argc_p, char ***argv_p,
|
|||
p.action = TC_ACT_UNSPEC;
|
||||
argc--;
|
||||
argv++;
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
p.action = TC_ACT_OK;
|
||||
argc--;
|
||||
argv++;
|
||||
|
|
|
|||
|
|
@ -172,7 +172,8 @@ parse_egress(struct action_util *a, int *argc_p, char ***argv_p,
|
|||
} else if (matches(*argv, "continue") == 0) {
|
||||
p.action = TC_POLICE_UNSPEC;
|
||||
NEXT_ARG();
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
p.action = TC_POLICE_OK;
|
||||
NEXT_ARG();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,8 @@ parse_nat(struct action_util *a, int *argc_p, char ***argv_p, int tca_id, struct
|
|||
sel.action = TC_ACT_UNSPEC;
|
||||
argc--;
|
||||
argv++;
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
sel.action = TC_ACT_OK;
|
||||
argc--;
|
||||
argv++;
|
||||
|
|
|
|||
|
|
@ -495,7 +495,8 @@ parse_pedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id, stru
|
|||
} else if (matches(*argv, "continue") == 0) {
|
||||
sel.sel.action = TC_ACT_UNSPEC;
|
||||
NEXT_ARG();
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
sel.sel.action = TC_ACT_OK;
|
||||
NEXT_ARG();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,7 +114,8 @@ parse_skbedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
|
|||
} else if (matches(*argv, "continue") == 0) {
|
||||
sel.action = TC_ACT_UNSPEC;
|
||||
NEXT_ARG();
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
sel.action = TC_ACT_OK;
|
||||
NEXT_ARG();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,7 +119,8 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
|
|||
parm.action = TC_ACT_UNSPEC;
|
||||
argc--;
|
||||
argv++;
|
||||
} else if (matches(*argv, "pass") == 0) {
|
||||
} else if (matches(*argv, "pass") == 0 ||
|
||||
matches(*argv, "ok") == 0) {
|
||||
parm.action = TC_ACT_OK;
|
||||
argc--;
|
||||
argv++;
|
||||
|
|
|
|||
Loading…
Reference in New Issue