From patchwork Wed May 24 18:19:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roopa Prabhu X-Patchwork-Id: 766613 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 3wY0zg4v6hz9sP9 for ; Thu, 25 May 2017 04:19:43 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b="Nm1nXJ8p"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933961AbdEXSTk (ORCPT ); Wed, 24 May 2017 14:19:40 -0400 Received: from mail-pf0-f178.google.com ([209.85.192.178]:33572 "EHLO mail-pf0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933865AbdEXST1 (ORCPT ); Wed, 24 May 2017 14:19:27 -0400 Received: by mail-pf0-f178.google.com with SMTP id e193so143309227pfh.0 for ; Wed, 24 May 2017 11:19:27 -0700 (PDT) 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=uE8yR6OqhaNjkGNp+G8BMz50eh8aVX5jthAp6aaCeIk=; b=Nm1nXJ8pJsknDZHzwuD1G1asvEs9B/CEE90sRkuWksO0PaDATNebOYkIBRQyzIxqnq l1AVkQi1ZT5Pa2bCM0kIlpcfDn87JD03IYn7y5SWu6yN6IHj+TWzU+zNdSoes+7hnDHm 49aGnsjzrXLbL4XYlXS+W5M1atUsy7Y3O0zpg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=uE8yR6OqhaNjkGNp+G8BMz50eh8aVX5jthAp6aaCeIk=; b=gvgHUFRQ4nfvtxnG1VyuVPF5vVgWg/8dH3cGvO8wz55GW3GrK36FrXCsKMGDpaw4Gr ASwSGgPSlR/maQvB9nXM7yT5Mnv71b3mhQr3yPBbEWuYJID4SHZjtwQtbZKGMx8N0jRF 1xFf5hwweJbVGZtlwbNnJoG3rekTH/cf1MalGZe7feA4Zy7OP1iLEKEjxqZWaHuEQj3y IjfcheLQTdJ9zBz826mrfjlQ8n5JZpHd6v3NcpoO/tps/TBzmeXJEOVM8fC2p1CM47Pc DL2zgRPIPT2BiNo+Bqca2SiPkQnMYl/mU4mCIzmT97eXuJ79p9JxeJkepBzUC+TgBsMJ YaPA== X-Gm-Message-State: AODbwcCXtQVIDImNWEH43v+Ah8CSt9NyStGMK4MQPZtNDtXVaCtxVTqI WLviDqjL+ll3tTcl X-Received: by 10.98.37.68 with SMTP id l65mr40528971pfl.175.1495649961987; Wed, 24 May 2017 11:19:21 -0700 (PDT) Received: from monster-08.mvlab.cumulusnetworks.com. ([216.129.126.126]) by smtp.googlemail.com with ESMTPSA id g63sm8805255pgc.59.2017.05.24.11.19.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 24 May 2017 11:19:21 -0700 (PDT) From: Roopa Prabhu X-Google-Original-From: Roopa Prabhu To: davem@davemloft.net Cc: netdev@vger.kernel.org, dsahern@gmail.com, nikolay@cumulusnetworks.com Subject: [PATCH net-next 7/8] net: ipv4: RTM_GETROUTE: return matched fib result when requested Date: Wed, 24 May 2017 11:19:10 -0700 Message-Id: <1495649951-30417-8-git-send-email-roopa@cumulusnetworks.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1495649951-30417-1-git-send-email-roopa@cumulusnetworks.com> References: <1495649951-30417-1-git-send-email-roopa@cumulusnetworks.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Roopa Prabhu This patch adds support to return matched fib result when RTM_F_FIB_MATCH flag is specified in RTM_GETROUTE request. This is useful for user-space applications/controllers wanting to query a matching route. Signed-off-by: Roopa Prabhu --- net/ipv4/route.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 6e0bd40..419bdba 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -114,6 +114,8 @@ #include #include +#include "fib_lookup.h" + #define RT_FL_TOS(oldflp4) \ ((oldflp4)->flowi4_tos & (IPTOS_RT_MASK | RTO_ONLINK)) @@ -2746,8 +2748,15 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, if (rtm->rtm_flags & RTM_F_LOOKUP_TABLE) table_id = rt->rt_table_id; - err = rt_fill_info(net, dst, src, table_id, &fl4, skb, - NETLINK_CB(in_skb).portid, nlh->nlmsg_seq, rt); + if (rtm->rtm_flags & RTM_F_FIB_MATCH) + err = fib_dump_info(skb, NETLINK_CB(in_skb).portid, + nlh->nlmsg_seq, RTM_NEWROUTE, table_id, + rt->rt_type, res.prefix, res.prefixlen, + fl4.flowi4_tos, res.fi, 0); + else + err = rt_fill_info(net, dst, src, table_id, &fl4, skb, + NETLINK_CB(in_skb).portid, nlh->nlmsg_seq, + rt); if (err < 0) goto errout_free;