[PATCH 1/1] actions: keyword flowid or classid terminates action pipeline
From: Jamal Hadi Salim <jhs@mojatatu.com>
Date: 2014-05-24 12:48:52
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Jamal Hadi Salim <jhs@mojatatu.com> scenario testcase: TC="sudo ./tc/tc" DEV="dev eth0" $TC qdisc del $DEV ingress $TC qdisc add $DEV ingress $TC filter add $DEV parent ffff: protocol ip u32 match ip src 10.0.0.0/24 action police rate 6Mbit burst 6Mbit drop flowid :1 $TC filter add $DEV parent ffff: protocol ip u32 match ip dst 10.0.0.0/24 action police rate 1Gbit burst 1Gbit pass flowid :1 $TC -s filter ls $DEV parent ffff: protocol ip $TC qdisc del $DEV ingress $TC qdisc add $DEV ingress $TC filter add $DEV parent ffff: protocol ip u32 match ip src 10.0.0.0/24 flowid 1:1 action police rate 6Mbit burst 6Mbit drop $TC filter add $DEV parent ffff: protocol ip u32 match ip dst 10.0.0.0/24 flowid 1:2 action police rate 1Gbit burst 1Gbit pass $TC -s filter ls $DEV parent ffff: protocol ip $TC qdisc del $DEV ingress $TC qdisc add $DEV ingress $TC filter add $DEV parent ffff: protocol ip pref 10 \ u32 match ip protocol 1 0xff \ flowid 1:10 \ action skbedit mark 11 \ action police rate 10kbit burst 10k pipe index 1 \ action skbedit mark 12 \ action police rate 20kbit burst 20k pipe index 2 \ action mirred egress mirror dev dummy0 $TC -s filter ls $DEV parent ffff: protocol ip $TC qdisc del $DEV ingress $TC qdisc add $DEV ingress $TC filter add $DEV parent ffff: protocol ip pref 10 \ u32 match ip protocol 1 0xff \ action skbedit mark 11 \ action police rate 10kbit burst 10k pipe index 1 \ action skbedit mark 12 \ action police rate 20kbit burst 20k pipe index 2 \ action mirred egress mirror dev dummy0 \ flowid 1:10 $TC -s filter ls $DEV parent ffff: protocol ip Reported-by: Seann Herdejurgen <redacted> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com> --- tc/m_action.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/tc/m_action.c b/tc/m_action.c
index 77479d6..5cd5e67 100644
--- a/tc/m_action.c
+++ b/tc/m_action.c@@ -185,6 +185,10 @@ parse_action(int *argc_p, char ***argv_p, int tca_id, struct nlmsghdr *n) } #endif continue; + } else if (strcmp(*argv, "flowid") == 0) { + break; + } else if (strcmp(*argv, "classid") == 0) { + break; } else if (strcmp(*argv, "help") == 0) { return -1; } else if (new_cmd(argv)) {
--
1.7.9.5