From patchwork Wed Dec 16 21:20:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 557763 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id EC20E140291 for ; Thu, 17 Dec 2015 08:20:58 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b=Pk/Z/t7y; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966887AbbLPVUz (ORCPT ); Wed, 16 Dec 2015 16:20:55 -0500 Received: from mail-pf0-f182.google.com ([209.85.192.182]:33902 "EHLO mail-pf0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965604AbbLPVUx (ORCPT ); Wed, 16 Dec 2015 16:20:53 -0500 Received: by mail-pf0-f182.google.com with SMTP id 68so18198596pfc.1 for ; Wed, 16 Dec 2015 13:20:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nEDDAAiqfuQolLvuFJUW8UDnP1zdGrHmTp/3HG9Vm9Q=; b=Pk/Z/t7yHgFS/vWWq24g7k3w5BEqbRad5i3poz22fucTZ/FF+zuexYz26p4AbwFN0z 8MS47aIHStG2Sp/0oN5A74LBbwlJeRtrYedZgB5VstuQVrdL5Q8lZHnoY7IyTbuWCdCS HN6S67PAPgNMLxR1vuwPkZJiwaeGlZn9zdKyU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nEDDAAiqfuQolLvuFJUW8UDnP1zdGrHmTp/3HG9Vm9Q=; b=HqFlL1+Yxo1Xj/poYaGcQ4/ugfocdhVtpaUCOShqlCU1pCmg2fTzBAP657AigTlwJX GMlZgDOBcikqrFbhXuBxd9nQchyS108hdAbxmZnwtaAgk35slWyWNiJSCHHPEa86Fr1l YR3FJjf6jEYRfxwKp2d17RH0AV1omFG8JRXEeOepJCBeUw8CgXKY/DyAGmYi508vU2Dv hozmvpH8f/cp4gosrKMYv7fvciFu0rrshLGHVwxpzazJ8Clh26LzkPepuWPbvkNwJkN3 QqoVo1ygclc4TkEUsd5VPIYYTR9vb4DlNtM78bRsVhuKFw+aD0SYzjbKXFE8qeQKzfmg LoOQ== X-Gm-Message-State: ALoCoQkhMCmc4kkmB1b3/wrXhdfbZNZgXH5JA1tV6CXcOyBJA9gc1+YJAs1+IxX29bgJo7A+Owq/Ij5GIlkibl1YNDuuL6/zyw== X-Received: by 10.98.7.79 with SMTP id b76mr2404655pfd.152.1450300853058; Wed, 16 Dec 2015 13:20:53 -0800 (PST) Received: from monster-14.cumulusnetworks.com. ([216.129.126.126]) by smtp.googlemail.com with ESMTPSA id n86sm6763507pfa.24.2015.12.16.13.20.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Dec 2015 13:20:52 -0800 (PST) From: David Ahern To: netdev@vger.kernel.org Cc: David Ahern Subject: [PATCH net-next 1/2] net: l3mdev: Add master device lookup by index Date: Wed, 16 Dec 2015 13:20:43 -0800 Message-Id: <1450300844-11010-2-git-send-email-dsa@cumulusnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1450300844-11010-1-git-send-email-dsa@cumulusnetworks.com> References: <1450300844-11010-1-git-send-email-dsa@cumulusnetworks.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add helper to lookup l3mdev master index given a device index. Signed-off-by: David Ahern --- include/net/l3mdev.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/include/net/l3mdev.h b/include/net/l3mdev.h index 774d85b2d5d9..786226f8e77b 100644 --- a/include/net/l3mdev.h +++ b/include/net/l3mdev.h @@ -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 @@ -167,6 +185,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;