forked from Minki/linux
net: sched: cls: add extack support for tcf_change_indev
This patch adds extack handling for the tcf_change_indev function which is common used by TC classifier implementations. Cc: David Ahern <dsahern@gmail.com> Signed-off-by: Alexander Aring <aring@mojatatu.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
571acf2106
commit
1057c55f6b
@ -557,13 +557,16 @@ static inline int tcf_valid_offset(const struct sk_buff *skb,
|
||||
#include <net/net_namespace.h>
|
||||
|
||||
static inline int
|
||||
tcf_change_indev(struct net *net, struct nlattr *indev_tlv)
|
||||
tcf_change_indev(struct net *net, struct nlattr *indev_tlv,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
char indev[IFNAMSIZ];
|
||||
struct net_device *dev;
|
||||
|
||||
if (nla_strlcpy(indev, indev_tlv, IFNAMSIZ) >= IFNAMSIZ)
|
||||
if (nla_strlcpy(indev, indev_tlv, IFNAMSIZ) >= IFNAMSIZ) {
|
||||
NL_SET_ERR_MSG(extack, "Interface name too long");
|
||||
return -EINVAL;
|
||||
}
|
||||
dev = __dev_get_by_name(net, indev);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
@ -526,13 +526,14 @@ static void fl_set_key_ip(struct nlattr **tb,
|
||||
}
|
||||
|
||||
static int fl_set_key(struct net *net, struct nlattr **tb,
|
||||
struct fl_flow_key *key, struct fl_flow_key *mask)
|
||||
struct fl_flow_key *key, struct fl_flow_key *mask,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
__be16 ethertype;
|
||||
int ret = 0;
|
||||
#ifdef CONFIG_NET_CLS_IND
|
||||
if (tb[TCA_FLOWER_INDEV]) {
|
||||
int err = tcf_change_indev(net, tb[TCA_FLOWER_INDEV]);
|
||||
int err = tcf_change_indev(net, tb[TCA_FLOWER_INDEV], extack);
|
||||
if (err < 0)
|
||||
return err;
|
||||
key->indev_ifindex = err;
|
||||
@ -841,7 +842,7 @@ static int fl_set_parms(struct net *net, struct tcf_proto *tp,
|
||||
tcf_bind_filter(tp, &f->res, base);
|
||||
}
|
||||
|
||||
err = fl_set_key(net, tb, &f->key, &mask->key);
|
||||
err = fl_set_key(net, tb, &f->key, &mask->key, extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -239,7 +239,7 @@ static int fw_set_parms(struct net *net, struct tcf_proto *tp,
|
||||
#ifdef CONFIG_NET_CLS_IND
|
||||
if (tb[TCA_FW_INDEV]) {
|
||||
int ret;
|
||||
ret = tcf_change_indev(net, tb[TCA_FW_INDEV]);
|
||||
ret = tcf_change_indev(net, tb[TCA_FW_INDEV], extack);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
f->ifindex = ret;
|
||||
|
@ -804,7 +804,7 @@ static int u32_set_parms(struct net *net, struct tcf_proto *tp,
|
||||
#ifdef CONFIG_NET_CLS_IND
|
||||
if (tb[TCA_U32_INDEV]) {
|
||||
int ret;
|
||||
ret = tcf_change_indev(net, tb[TCA_U32_INDEV]);
|
||||
ret = tcf_change_indev(net, tb[TCA_U32_INDEV], extack);
|
||||
if (ret < 0)
|
||||
return -EINVAL;
|
||||
n->ifindex = ret;
|
||||
|
Loading…
Reference in New Issue
Block a user