summaryrefslogtreecommitdiffstats
path: root/net/sched/act_ife.c
diff options
context:
space:
mode:
authorAlexander Aring <aring@mojatatu.com>2017-08-28 15:03:14 -0400
committerDavid S. Miller <davem@davemloft.net>2017-08-29 15:14:18 -0700
commitb522ed6ed665ba6a349d31136fa3f40c408f2b5a (patch)
treea5a793d5c3fac67547811c1d38730fa68509eabc /net/sched/act_ife.c
parent2804fd3af6ba5ae5737705b27146455eabe2e2f8 (diff)
downloadlinux-stable-b522ed6ed665ba6a349d31136fa3f40c408f2b5a.tar.gz
linux-stable-b522ed6ed665ba6a349d31136fa3f40c408f2b5a.tar.bz2
linux-stable-b522ed6ed665ba6a349d31136fa3f40c408f2b5a.zip
act_ife: use registered ife_type as fallback
This patch handles a default IFE type if it's not given by user space netlink api. The default IFE type will be the registered ethertype by IEEE for IFE ForCES. 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>
Diffstat (limited to 'net/sched/act_ife.c')
-rw-r--r--net/sched/act_ife.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
index c5dec308b8b1..7ed1be80ee86 100644
--- a/net/sched/act_ife.c
+++ b/net/sched/act_ife.c
@@ -435,8 +435,8 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
struct nlattr *tb[TCA_IFE_MAX + 1];
struct nlattr *tb2[IFE_META_MAX + 1];
struct tcf_ife_info *ife;
+ u16 ife_type = ETH_P_IFE;
struct tc_ife *parm;
- u16 ife_type = 0;
u8 *daddr = NULL;
u8 *saddr = NULL;
bool exists = false;
@@ -456,18 +456,6 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
if (exists && bind)
return 0;
- if (parm->flags & IFE_ENCODE) {
- /* Until we get issued the ethertype, we cant have
- * a default..
- **/
- if (!tb[TCA_IFE_TYPE]) {
- if (exists)
- tcf_hash_release(*a, bind);
- pr_info("You MUST pass etherype for encoding\n");
- return -EINVAL;
- }
- }
-
if (!exists) {
ret = tcf_hash_create(tn, parm->index, est, a, &act_ife_ops,
bind, false);
@@ -484,7 +472,8 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
ife->flags = parm->flags;
if (parm->flags & IFE_ENCODE) {
- ife_type = nla_get_u16(tb[TCA_IFE_TYPE]);
+ if (tb[TCA_IFE_TYPE])
+ ife_type = nla_get_u16(tb[TCA_IFE_TYPE]);
if (tb[TCA_IFE_DMAC])
daddr = nla_data(tb[TCA_IFE_DMAC]);
if (tb[TCA_IFE_SMAC])