net: add netlink_ext_ack argument to rtnl_link_ops.newlink
Add support for extended error reporting. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> Acked-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
这个提交包含在:
@@ -140,7 +140,8 @@ unsigned int ipvlan_nf_input(void *priv, struct sk_buff *skb,
|
||||
void ipvlan_count_rx(const struct ipvl_dev *ipvlan,
|
||||
unsigned int len, bool success, bool mcast);
|
||||
int ipvlan_link_new(struct net *src_net, struct net_device *dev,
|
||||
struct nlattr *tb[], struct nlattr *data[]);
|
||||
struct nlattr *tb[], struct nlattr *data[],
|
||||
struct netlink_ext_ack *extack);
|
||||
void ipvlan_link_delete(struct net_device *dev, struct list_head *head);
|
||||
void ipvlan_link_setup(struct net_device *dev);
|
||||
int ipvlan_link_register(struct rtnl_link_ops *ops);
|
||||
|
@@ -508,7 +508,8 @@ err:
|
||||
}
|
||||
|
||||
int ipvlan_link_new(struct net *src_net, struct net_device *dev,
|
||||
struct nlattr *tb[], struct nlattr *data[])
|
||||
struct nlattr *tb[], struct nlattr *data[],
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ipvl_dev *ipvlan = netdev_priv(dev);
|
||||
struct ipvl_port *port;
|
||||
|
@@ -73,10 +73,9 @@ static void ipvtap_update_features(struct tap_dev *tap,
|
||||
netdev_update_features(vlan->dev);
|
||||
}
|
||||
|
||||
static int ipvtap_newlink(struct net *src_net,
|
||||
struct net_device *dev,
|
||||
struct nlattr *tb[],
|
||||
struct nlattr *data[])
|
||||
static int ipvtap_newlink(struct net *src_net, struct net_device *dev,
|
||||
struct nlattr *tb[], struct nlattr *data[],
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ipvtap_dev *vlantap = netdev_priv(dev);
|
||||
int err;
|
||||
@@ -98,7 +97,7 @@ static int ipvtap_newlink(struct net *src_net,
|
||||
/* Don't put anything that may fail after macvlan_common_newlink
|
||||
* because we can't undo what it does.
|
||||
*/
|
||||
err = ipvlan_link_new(src_net, dev, tb, data);
|
||||
err = ipvlan_link_new(src_net, dev, tb, data, extack);
|
||||
if (err) {
|
||||
netdev_rx_handler_unregister(dev);
|
||||
return err;
|
||||
|
在新工单中引用
屏蔽一个用户