net: sched: add termination action to allow goto chain

Introduce new type of termination action called "goto_chain". This allows
user to specify a chain to be processed. This action type is
then processed as a return value in tcf_classify loop in similar
way as "reclassify" is, only it does not reset to the first filter
in chain but rather reset to the first filter of the desired chain.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Jiri Pirko 2017-05-17 11:08:03 +02:00 committed by David S. Miller
parent 9fb9f251d2
commit db50514f9a
5 changed files with 54 additions and 3 deletions

View file

@ -307,8 +307,12 @@ reclassify:
err = tp->classify(skb, tp, res);
#ifdef CONFIG_NET_CLS_ACT
if (unlikely(err == TC_ACT_RECLASSIFY && !compat_mode))
if (unlikely(err == TC_ACT_RECLASSIFY && !compat_mode)) {
goto reset;
} else if (unlikely(TC_ACT_EXT_CMP(err, TC_ACT_GOTO_CHAIN))) {
old_tp = res->goto_tp;
goto reset;
}
#endif
if (err >= 0)
return err;