Skip to content

Commit

Permalink
net: vrf: Add extack messages for newlink failures
Browse files Browse the repository at this point in the history
Add extack error messages for failure paths creating vrf devices. Once
extack support is added to iproute2, we go from the unhelpful:
    $  ip li add foobar type vrf
    RTNETLINK answers: Invalid argument

to:
    $ ip li add foobar type vrf
    Error: VRF table id is missing

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David Ahern authored and David S. Miller committed Aug 7, 2017
1 parent 733a707 commit 53b9483
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions drivers/net/vrf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1371,10 +1371,14 @@ static int vrf_validate(struct nlattr *tb[], struct nlattr *data[],
struct netlink_ext_ack *extack)
{
if (tb[IFLA_ADDRESS]) {
if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN)
if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN) {
NL_SET_ERR_MSG(extack, "Invalid hardware address");
return -EINVAL;
if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS])))
}
if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS]))) {
NL_SET_ERR_MSG(extack, "Invalid hardware address");
return -EADDRNOTAVAIL;
}
}
return 0;
}
Expand All @@ -1399,12 +1403,17 @@ static int vrf_newlink(struct net *src_net, struct net_device *dev,
struct net *net;
int err;

if (!data || !data[IFLA_VRF_TABLE])
if (!data || !data[IFLA_VRF_TABLE]) {
NL_SET_ERR_MSG(extack, "VRF table id is missing");
return -EINVAL;
}

vrf->tb_id = nla_get_u32(data[IFLA_VRF_TABLE]);
if (vrf->tb_id == RT_TABLE_UNSPEC)
if (vrf->tb_id == RT_TABLE_UNSPEC) {
NL_SET_ERR_MSG_ATTR(extack, data[IFLA_VRF_TABLE],
"Invalid VRF table id");
return -EINVAL;
}

dev->priv_flags |= IFF_L3MDEV_MASTER;

Expand Down

0 comments on commit 53b9483

Please sign in to comment.