Skip to content

Commit

Permalink
sched: act: ife: move encode/decode check to init
Browse files Browse the repository at this point in the history
This patch adds the check of the two possible ife handlings encode
and decode to the init callback. The decode value is for usability
aspect and used in userspace code only. The current code offers encode
else decode only. This patch avoids any other option than this.

Signed-off-by: Alexander Aring <aring@mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Alexander Aring authored and David S. Miller committed Oct 13, 2017
1 parent ed7f262 commit 734534e
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions net/sched/act_ife.c
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,13 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,

parm = nla_data(tb[TCA_IFE_PARMS]);

/* IFE_DECODE is 0 and indicates the opposite of IFE_ENCODE because
* they cannot run as the same time. Check on all other values which
* are not supported right now.
*/
if (parm->flags & ~IFE_ENCODE)
return -EINVAL;

exists = tcf_idr_check(tn, parm->index, a, bind);
if (exists && bind)
return 0;
Expand Down Expand Up @@ -786,17 +793,7 @@ static int tcf_ife_act(struct sk_buff *skb, const struct tc_action *a,
if (ife->flags & IFE_ENCODE)
return tcf_ife_encode(skb, a, res);

if (!(ife->flags & IFE_ENCODE))
return tcf_ife_decode(skb, a, res);

pr_info_ratelimited("unknown failure(policy neither de/encode\n");
spin_lock(&ife->tcf_lock);
bstats_update(&ife->tcf_bstats, skb);
tcf_lastuse_update(&ife->tcf_tm);
ife->tcf_qstats.drops++;
spin_unlock(&ife->tcf_lock);

return TC_ACT_SHOT;
return tcf_ife_decode(skb, a, res);
}

static int tcf_ife_walker(struct net *net, struct sk_buff *skb,
Expand Down

0 comments on commit 734534e

Please sign in to comment.