net: Add extack to ndo_add_slave
authorDavid Ahern <dsahern@gmail.com>
Thu, 5 Oct 2017 00:48:46 +0000 (17:48 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 5 Oct 2017 04:39:33 +0000 (21:39 -0700)
Pass extack to do_set_master and down to ndo_add_slave

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_options.c
drivers/net/team/team.c
drivers/net/vrf.c
include/linux/netdevice.h
include/net/bonding.h
net/batman-adv/soft-interface.c
net/bridge/br_device.c
net/core/rtnetlink.c

index b19dc033fb3691b6199182f25d4d555e1e865f4b..78feb94a36db9152c33ec967f76f335562b73e8c 100644 (file)
@@ -1328,7 +1328,8 @@ void bond_lower_state_changed(struct slave *slave)
 }
 
 /* enslave device <slave> to bond device <master> */
-int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
+int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
+                struct netlink_ext_ack *extack)
 {
        struct bonding *bond = netdev_priv(bond_dev);
        const struct net_device_ops *slave_ops = slave_dev->netdev_ops;
@@ -3492,7 +3493,7 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
        switch (cmd) {
        case BOND_ENSLAVE_OLD:
        case SIOCBONDENSLAVE:
-               res = bond_enslave(bond_dev, slave_dev);
+               res = bond_enslave(bond_dev, slave_dev, NULL);
                break;
        case BOND_RELEASE_OLD:
        case SIOCBONDRELEASE:
index 5931aa2fe9974c1d20934be9d9ade6451af0cfcc..8a9b085c2a98341e9d4b829ef4cb42daea5ae36c 100644 (file)
@@ -1383,7 +1383,7 @@ static int bond_option_slaves_set(struct bonding *bond,
        switch (command[0]) {
        case '+':
                netdev_dbg(bond->dev, "Adding slave %s\n", dev->name);
-               ret = bond_enslave(bond->dev, dev);
+               ret = bond_enslave(bond->dev, dev, NULL);
                break;
 
        case '-':
index ae53e899259f8d6f919d6f6bef07524c92c6fea5..4359d45aa131af174079785b5f6bbfa8eaa0b8fc 100644 (file)
@@ -1914,7 +1914,8 @@ static int team_netpoll_setup(struct net_device *dev,
 }
 #endif
 
-static int team_add_slave(struct net_device *dev, struct net_device *port_dev)
+static int team_add_slave(struct net_device *dev, struct net_device *port_dev,
+                         struct netlink_ext_ack *extack)
 {
        struct team *team = netdev_priv(dev);
        int err;
index cc18b7b11612d16271a1dbbb2d55c8f61781b9be..4a082ef535334e7bf703305357b1337f6eed7ab2 100644 (file)
@@ -788,7 +788,8 @@ err:
        return ret;
 }
 
-static int vrf_add_slave(struct net_device *dev, struct net_device *port_dev)
+static int vrf_add_slave(struct net_device *dev, struct net_device *port_dev,
+                        struct netlink_ext_ack *extack)
 {
        if (netif_is_l3_master(port_dev) || netif_is_l3_slave(port_dev))
                return -EINVAL;
index 05fcaba4b0d955f71619966f005e4df96125ff39..368a5064a487d7791bf90fd2e06586030e99b6a9 100644 (file)
@@ -1246,7 +1246,8 @@ struct net_device_ops {
                                                     u32 flow_id);
 #endif
        int                     (*ndo_add_slave)(struct net_device *dev,
-                                                struct net_device *slave_dev);
+                                                struct net_device *slave_dev,
+                                                struct netlink_ext_ack *extack);
        int                     (*ndo_del_slave)(struct net_device *dev,
                                                 struct net_device *slave_dev);
        netdev_features_t       (*ndo_fix_features)(struct net_device *dev,
index b2e68657a2162cd55b957c9230779f5d066fe6f3..2860cc66c2bb3ef42e3d690faeca6bd855f772d0 100644 (file)
@@ -596,7 +596,8 @@ void bond_destroy_sysfs(struct bond_net *net);
 void bond_prepare_sysfs_group(struct bonding *bond);
 int bond_sysfs_slave_add(struct slave *slave);
 void bond_sysfs_slave_del(struct slave *slave);
-int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev);
+int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
+                struct netlink_ext_ack *extack);
 int bond_release(struct net_device *bond_dev, struct net_device *slave_dev);
 u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb);
 int bond_set_carrier(struct bonding *bond);
index c2c986746d0b65cb594a6fc5bfda089bc54cf445..e7d5fbb6ad53d6eecff12ede84af46dc5a605fd7 100644 (file)
@@ -867,7 +867,8 @@ free_bat_counters:
  * Return: 0 if successful or error otherwise.
  */
 static int batadv_softif_slave_add(struct net_device *dev,
-                                  struct net_device *slave_dev)
+                                  struct net_device *slave_dev,
+                                  struct netlink_ext_ack *extack)
 {
        struct batadv_hard_iface *hard_iface;
        struct net *net = dev_net(dev);
index f6b6a92f1c486aa94390a6bbe48de6c221110a22..cb0131d70ab1e0dd9bb66a910c424061706fd949 100644 (file)
@@ -320,7 +320,8 @@ void br_netpoll_disable(struct net_bridge_port *p)
 
 #endif
 
-static int br_add_slave(struct net_device *dev, struct net_device *slave_dev)
+static int br_add_slave(struct net_device *dev, struct net_device *slave_dev,
+                       struct netlink_ext_ack *extack)
 
 {
        struct net_bridge *br = netdev_priv(dev);
index 1ee98b1369d576ab265ce30cfa6eb4cef8bee4e7..c5ee429bcce9735465c5b6b6fc739e98e7488f12 100644 (file)
@@ -1957,7 +1957,8 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb)
        return err;
 }
 
-static int do_set_master(struct net_device *dev, int ifindex)
+static int do_set_master(struct net_device *dev, int ifindex,
+                        struct netlink_ext_ack *extack)
 {
        struct net_device *upper_dev = netdev_master_upper_dev_get(dev);
        const struct net_device_ops *ops;
@@ -1982,7 +1983,7 @@ static int do_set_master(struct net_device *dev, int ifindex)
                        return -EINVAL;
                ops = upper_dev->netdev_ops;
                if (ops->ndo_add_slave) {
-                       err = ops->ndo_add_slave(upper_dev, dev);
+                       err = ops->ndo_add_slave(upper_dev, dev, extack);
                        if (err)
                                return err;
                } else {
@@ -2115,7 +2116,7 @@ static int do_setlink(const struct sk_buff *skb,
        }
 
        if (tb[IFLA_MASTER]) {
-               err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]));
+               err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
                if (err)
                        goto errout;
                status |= DO_SETLINK_MODIFIED;
@@ -2753,7 +2754,8 @@ replay:
                                goto out_unregister;
                }
                if (tb[IFLA_MASTER]) {
-                       err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]));
+                       err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]),
+                                           extack);
                        if (err)
                                goto out_unregister;
                }