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>
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++;
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++;
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++;
} 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();
}
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++;
} 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();
}
} 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();
}
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++;