l2tp: set name_assign_type for devices created by l2tp_eth.c
authorGuillaume Nault <g.nault@alphalink.fr>
Mon, 24 Apr 2017 12:16:06 +0000 (14:16 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Apr 2017 15:41:56 +0000 (11:41 -0400)
Export naming scheme used when creating l2tpeth interfaces
(/sys/class/net/<iface>/name_assign_type). This let userspace know if
the device's name has been generated automatically or defined manually.

Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Acked-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/l2tp/l2tp_eth.c

index b722d55..5e44b3c 100644 (file)
@@ -258,6 +258,7 @@ static void l2tp_eth_adjust_mtu(struct l2tp_tunnel *tunnel,
 
 static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 peer_session_id, struct l2tp_session_cfg *cfg)
 {
+       unsigned char name_assign_type;
        struct net_device *dev;
        char name[IFNAMSIZ];
        struct l2tp_tunnel *tunnel;
@@ -281,8 +282,11 @@ static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 p
                        goto out;
                }
                strlcpy(name, cfg->ifname, IFNAMSIZ);
-       } else
+               name_assign_type = NET_NAME_USER;
+       } else {
                strcpy(name, L2TP_ETH_DEV_NAME);
+               name_assign_type = NET_NAME_ENUM;
+       }
 
        session = l2tp_session_create(sizeof(*spriv), tunnel, session_id,
                                      peer_session_id, cfg);
@@ -291,7 +295,7 @@ static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 p
                goto out;
        }
 
-       dev = alloc_netdev(sizeof(*priv), name, NET_NAME_UNKNOWN,
+       dev = alloc_netdev(sizeof(*priv), name, name_assign_type,
                           l2tp_eth_dev_setup);
        if (!dev) {
                rc = -ENOMEM;