bareudp: Add extack support to bareudp_configure()
authorGuillaume Nault <gnault@redhat.com>
Mon, 13 Dec 2021 18:17:17 +0000 (19:17 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Dec 2021 12:39:17 +0000 (12:39 +0000)
Add missing extacks for common configuration errors.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bareudp.c

index f803303..ba587e5 100644 (file)
@@ -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;