Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68d57f3b authored by David Ahern's avatar David Ahern Committed by David S. Miller
Browse files

rtnetlink: Add more extack messages to rtnl_newlink



Add extack arg to the nla_parse_nested calls in rtnl_newlink, and
add messages for unknown device type and link network namespace id.
In particular, it improves the failure message when the wrong link
type is used. From
    $ ip li add bond1 type bonding
    RTNETLINK answers: Operation not supported
to
    $ ip li add bond1 type bonding
    Error: Unknown device type.

(The module name is bonding but the link type is bond.)

Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d7e774f3
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -3054,7 +3054,7 @@ static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
			if (ops->maxtype && linkinfo[IFLA_INFO_DATA]) {
				err = nla_parse_nested(attr, ops->maxtype,
						       linkinfo[IFLA_INFO_DATA],
						       ops->policy, NULL);
						       ops->policy, extack);
				if (err < 0)
					return err;
				data = attr;
@@ -3076,7 +3076,7 @@ static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
						       m_ops->slave_maxtype,
						       linkinfo[IFLA_INFO_SLAVE_DATA],
						       m_ops->slave_policy,
						       NULL);
						       extack);
				if (err < 0)
					return err;
				slave_data = slave_attr;
@@ -3140,6 +3140,7 @@ static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
					goto replay;
			}
#endif
			NL_SET_ERR_MSG(extack, "Unknown device type");
			return -EOPNOTSUPP;
		}

@@ -3160,6 +3161,7 @@ static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,

			link_net = get_net_ns_by_id(dest_net, id);
			if (!link_net) {
				NL_SET_ERR_MSG(extack, "Unknown network namespace id");
				err =  -EINVAL;
				goto out;
			}