]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
net: l3mdev: Add master device lookup by index
authorDavid Ahern <dsa@cumulusnetworks.com>
Thu, 1 Feb 2018 20:58:00 +0000 (21:58 +0100)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Tue, 13 Mar 2018 10:47:51 +0000 (11:47 +0100)
BugLink: http://bugs.launchpad.net/bugs/1744078
Add helper to lookup l3mdev master index given a device index.

Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 1a8524794fc7c70f44ac28e3a6e8fd637bc41f14)
Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
Acked-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
include/net/l3mdev.h

index 5689a0c749f76cd7ce5810b6ac165e43ddb0b59d..5567d46b3cff913ab927e05fefe7c09dc4f2836e 100644 (file)
@@ -51,6 +51,24 @@ static inline int l3mdev_master_ifindex(struct net_device *dev)
        return ifindex;
 }
 
+static inline int l3mdev_master_ifindex_by_index(struct net *net, int ifindex)
+{
+       struct net_device *dev;
+       int rc = 0;
+
+       if (likely(ifindex)) {
+               rcu_read_lock();
+
+               dev = dev_get_by_index_rcu(net, ifindex);
+               if (dev)
+                       rc = l3mdev_master_ifindex_rcu(dev);
+
+               rcu_read_unlock();
+       }
+
+       return rc;
+}
+
 /* get index of an interface to use for FIB lookups. For devices
  * enslaved to an L3 master device FIB lookups are based on the
  * master index
@@ -170,6 +188,11 @@ static inline int l3mdev_master_ifindex(struct net_device *dev)
        return 0;
 }
 
+static inline int l3mdev_master_ifindex_by_index(struct net *net, int ifindex)
+{
+       return 0;
+}
+
 static inline int l3mdev_fib_oif_rcu(struct net_device *dev)
 {
        return dev ? dev->ifindex : 0;