|
@@ -1919,6 +1919,7 @@ static int do_set_master(struct net_device *dev, int ifindex)
|
|
|
#define DO_SETLINK_NOTIFY 0x03
|
|
|
static int do_setlink(const struct sk_buff *skb,
|
|
|
struct net_device *dev, struct ifinfomsg *ifm,
|
|
|
+ struct netlink_ext_ack *extack,
|
|
|
struct nlattr **tb, char *ifname, int status)
|
|
|
{
|
|
|
const struct net_device_ops *ops = dev->netdev_ops;
|
|
@@ -2201,7 +2202,7 @@ static int do_setlink(const struct sk_buff *skb,
|
|
|
}
|
|
|
|
|
|
if (xdp[IFLA_XDP_FD]) {
|
|
|
- err = dev_change_xdp_fd(dev,
|
|
|
+ err = dev_change_xdp_fd(dev, extack,
|
|
|
nla_get_s32(xdp[IFLA_XDP_FD]),
|
|
|
xdp_flags);
|
|
|
if (err)
|
|
@@ -2261,7 +2262,7 @@ static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|
|
if (err < 0)
|
|
|
goto errout;
|
|
|
|
|
|
- err = do_setlink(skb, dev, ifm, tb, ifname, 0);
|
|
|
+ err = do_setlink(skb, dev, ifm, extack, tb, ifname, 0);
|
|
|
errout:
|
|
|
return err;
|
|
|
}
|
|
@@ -2423,6 +2424,7 @@ EXPORT_SYMBOL(rtnl_create_link);
|
|
|
static int rtnl_group_changelink(const struct sk_buff *skb,
|
|
|
struct net *net, int group,
|
|
|
struct ifinfomsg *ifm,
|
|
|
+ struct netlink_ext_ack *extack,
|
|
|
struct nlattr **tb)
|
|
|
{
|
|
|
struct net_device *dev, *aux;
|
|
@@ -2430,7 +2432,7 @@ static int rtnl_group_changelink(const struct sk_buff *skb,
|
|
|
|
|
|
for_each_netdev_safe(net, dev, aux) {
|
|
|
if (dev->group == group) {
|
|
|
- err = do_setlink(skb, dev, ifm, tb, NULL, 0);
|
|
|
+ err = do_setlink(skb, dev, ifm, extack, tb, NULL, 0);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
}
|
|
@@ -2576,14 +2578,15 @@ replay:
|
|
|
status |= DO_SETLINK_NOTIFY;
|
|
|
}
|
|
|
|
|
|
- return do_setlink(skb, dev, ifm, tb, ifname, status);
|
|
|
+ return do_setlink(skb, dev, ifm, extack, tb, ifname,
|
|
|
+ status);
|
|
|
}
|
|
|
|
|
|
if (!(nlh->nlmsg_flags & NLM_F_CREATE)) {
|
|
|
if (ifm->ifi_index == 0 && tb[IFLA_GROUP])
|
|
|
return rtnl_group_changelink(skb, net,
|
|
|
nla_get_u32(tb[IFLA_GROUP]),
|
|
|
- ifm, tb);
|
|
|
+ ifm, extack, tb);
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|