diff options
author | Guillaume Nault <gnault@redhat.com> | 2021-12-13 21:17:17 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-12-14 15:39:17 +0300 |
commit | b4bffa4ceab1be0e4cc39aa56c0746a63e5d3c6f (patch) | |
tree | ecc7f0978d0c35642076d3d8beef95c76536ec8c /drivers/net/bareudp.c | |
parent | 0976b888a150476ba955ce4765858824c633cfd2 (diff) | |
download | linux-b4bffa4ceab1be0e4cc39aa56c0746a63e5d3c6f.tar.xz |
bareudp: Add extack support to bareudp_configure()
Add missing extacks for common configuration errors.
Signed-off-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bareudp.c')
-rw-r--r-- | drivers/net/bareudp.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c index f80330361399..ba587e5fc24f 100644 --- a/drivers/net/bareudp.c +++ b/drivers/net/bareudp.c @@ -609,7 +609,8 @@ static struct bareudp_dev *bareudp_find_dev(struct bareudp_net *bn, } static int bareudp_configure(struct net *net, struct net_device *dev, - struct bareudp_conf *conf) + struct bareudp_conf *conf, + struct netlink_ext_ack *extack) { struct bareudp_net *bn = net_generic(net, bareudp_net_id); struct bareudp_dev *t, *bareudp = netdev_priv(dev); @@ -618,13 +619,17 @@ static int bareudp_configure(struct net *net, struct net_device *dev, bareudp->net = net; bareudp->dev = dev; t = bareudp_find_dev(bn, conf); - if (t) + if (t) { + NL_SET_ERR_MSG(extack, "Another bareudp device using the same port already exists"); return -EBUSY; + } if (conf->multi_proto_mode && (conf->ethertype != htons(ETH_P_MPLS_UC) && - conf->ethertype != htons(ETH_P_IP))) + conf->ethertype != htons(ETH_P_IP))) { + NL_SET_ERR_MSG(extack, "Cannot set multiproto mode for this ethertype (only IPv4 and unicast MPLS are supported)"); return -EINVAL; + } bareudp->port = conf->port; bareudp->ethertype = conf->ethertype; @@ -671,7 +676,7 @@ static int bareudp_newlink(struct net *net, struct net_device *dev, if (err) return err; - err = bareudp_configure(net, dev, &conf); + err = bareudp_configure(net, dev, &conf, extack); if (err) return err; |