From patchwork Sun Jan 7 10:45:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856513 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="GCW4SpkD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw7t574zz9ryv for ; Sun, 7 Jan 2018 21:46:50 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753266AbeAGKqs (ORCPT ); Sun, 7 Jan 2018 05:46:48 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753182AbeAGKqp (ORCPT ); Sun, 7 Jan 2018 05:46:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ggsOuXQfj8Is46+6aYhbrTqUJF9OTBDw8TzuQ45E3tw=; b=GCW4SpkDBUL0rN93XQqtEC2dsGZOP8As+1QXoRsg+7CqHDPGU2cYu4ktSvcpieoCBE6XLkPuWYzpfiIjxUiA+B1G89VeHY4pdsR41GfBqdIf8pAiOkuC1uZz5Eo2okK777uJgwowhBeJILad3FSSOnrF/mLbhGk+ODSn9X4UWCc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:32 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 01/18] ipv6: Remove redundant route flushing during namespace dismantle Date: Sun, 7 Jan 2018 12:45:01 +0200 Message-Id: <20180107104518.31693-2-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a9a0f74c-f81b-4dad-2afc-08d555bbebc6 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:zv1OCO88IToVMtRZ+oPRq0Hx+MexaDOGjDHjUHzMH0hcKLPm4n5fIwNWPjOy1ZX05HBT3Cy/n5dCCyKCggpuGp0tAzJItFvyhVwzRgvd7kHFNzdPsMC8jnffucMm6o9dQy04nrkWF+gVVYICdxDbvoJIN+bNVu9DyonAXVTB5nBVp2evJ+/5gWWndPIVIbdNcGBAqP0hMJ8UPt5AyMb0bcT3M2Vfo0VJMrqiBej6Er5YoD2Alh2RBlaZj2UCu5wc; 25:s0oGNzwWIx5DnGDGatBe/pthBN7kA6bwJ7KQZIcZ8Q2pliUH81H6FaaNx1atrkvLCHSBCicTTMxbcWhkX72EMxXKhQPBl83IQiz5n9G+h5pqjd71Av+sRmnLvXZk6RPlA+4fA/Ro73gMVzcDlX3v6AgJcckyOf8jeBGfcwOU5QcCE8+sWHR2fs40ZR/WYaa5+rmFQwbf+QHw0Co8wlA+Io7r3GslQKflvr4azrBUc0PHx0kUxm8O6xWqLwYhcF/Ry8tMb1crvCwMBVFyiy3GSna0/xD/WaJL1MCELzGaosCkH/LZOP7MM/znVwz+vPUoP6ghrKrCbDC8j3pSQGrjAw==; 31:jB2i5PBlbCIxuIUn1PttbvxyubVnB2Vbf+cCREXJk7kWg9jfGcYWRE2WKGxXOZLOh7ql1bhgUqWw5Mx4Cfj9yqNOsWsZvRB9wCD0p5iH72mbn56EHTldkSIKY9gZ64VC0kkLBEjmsvdkcY/qdf+hAkIlGGeIYwoN31Y70QDHyRDHaBeiOEnX+/5FAR0UDntyjAel52jCVL9NSnjW2TCKoL1PzBuE2geTJvIJmzMZt4Y= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:SOWEQ0dIpdjY0v3v9SnvrPu/fZ84Q1OTBh7UUvHOgbrlfxLYmhhLDLfbFV+u0SUxA24zorMaIydsyYtagWzbrtKrxmDnSqWjdMEoX4X2psStRDR/jufw7VGnCpTXMCdV1AUboJKiGYcHKXi6crldN0cTXxDN4/iwUMeHVueBJS4F0tJbR9l5KDyIZVkdN8vvQq0WC827mLS8lgE2uezwI0DYgawLQSZ0Ptl2rntDwFhvpOrAQ4pu16WiMORFp5czw3kXopcPRzhBOdPSdUho0B6qxitva2CukkQ485/CTp7uWJHxLsKA42tmV/5BH7xDNBVcV0je2RKccJmYLxbRf/aA/6XtoA+lRVUNFk2D9PAYwljcLW6Q9dK8r+HYDluF8Yi8mXs+Z5jruqBP2tXfpJP0l3lLn2hGjd3RuIDeaQminP0A7ayYwlZb9JcRKLQGSbbFKSnVeEAq7THbXwtqvHpgS8n+9whs20f5Bw1bNn1NYUD56tixWI97YALANzCw; 4:ydUPwE9rBtgn/KTjzhqZbFbfURDpZDT+9U5NBrDMUmqG7Nz8iqlITePkTMLkkIluqBGS2CPahK2mGM6Vg1HnxtM95i5/+7GSjeBk2n/etj137f0RdlGts1xdsOJnNGn/b01jW6D13kFKPZ8e0eiS61cpkqBt8D0WL8IfXmvmoMW7QOWgxWapqUt2LhV1qEX/xWtRB10L/OjEDUJTqi9+2ip9orGnzUCMjRTg6OX6+NKInXrf/XgOLs/59lSSASgH34w3OE/dOnxWDhY1/wILaw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:YvNyZACaASXz8YjjK0Ctd4hAPaobVHdNSns7QxZmc3vAxzcG3yFMChNhvmy9H67O72TJJrxXZeOwYnsecu8dSO2jgcoVRyF9rL2y4TOnx29N1Vry+X1ldCZq/W2SLbqFgZtpt5ymL4PzRnkR+CD0BQvkOpJ5i3MaCfv5WOj1/ZVtQfIPL41KcNLVl6dnLRFtpJZjZ64zMKP6H0cEarAYt8srxgSECoMVEU8cDxfcdYCJOWv86S5PNg+vn99JOybxMn1t7STUqHwG94oIFXh1I4XDtHUA9LlKvTRKa9SCQB7FSgsc8Dm0MNh60e8ClD4mS/oOATRhxQlL2cM8GzlnXVc/TNa3lXzY5C9ipVoqnoyqkByyN2wNdQtxEvF05T2X3orsRASnWKdtcplqkYyuil85jih6WD6gzPKeHvqfixsSasnl91QO9P5si6+ZiFQh3ozTF3BjsYVUfTWSFgJGTNG7h7yC9de+jdnxRS4x0RC28ovHX/lIS2unF1aDiDP5nR4MNecWbJ38F8EK8JuvnaQL0tscfK8ZgbQaV+vkS0xHH1L7tDH1bOMZ86qMuGrDEXxY/hQupmfN+Wqv95at7IikgsJnCzY4BDGDRrXBJdvHkzH1ChE91RwfsJ39eGhXYWL0SRu4yYPjEreeF4kVCY6tWKE06AYzfyBAM2rg8yi7M4EYM5I9pLFFhId44v7kKRHhZUR3Q3GEDDOEfiuYqS0wswQ23F1hLKSibgTbBt5iUb35NYhFxB3DicP/YtajLuvJ1CU1XWh3EneRyUvjxooMMJIUdfP8s5/W7BZTW0GFb+lmIlWpUsPv7J0EqJSKGB2FtPWCN+OSee95aFSh2ragmM+bVZ1u31zs79gMmp5IUfjscVqqAL3CFUk3EQ+Ow6aYf0jp+zs80bUvRvSHHiX4H5vpAsyPeWzKgPPmZmjdt0Ze2rZ4dimp6zvDkwkPFgKwIiMaocds2ALCi/OB61Fyn8MP94CKGaBrWmH66YM4kVi0eybgq8Q5U7WylXo6iYOm5Tx9uo4i7YxOnymq8BJzEljuab/YQjnZlnVrQXYsUeJpiVNzuV00x6T+dUCU+6o1VuuviZFe8UP5oltCwsuiCTdS6w7dA4Bvm4l8YFXsL0LjmZkoohuDwFU03K2m+KHkZZpB9e6/1r32d9A5zDfjyXKMn8JcnCNPZkqaksYvA9FVEtMZDMLu2hu6bb4LGr1KMFwBlBv8HQz6n5d5ZisjQp3th7OYlMVLzzJbFpYf2GnrNq6TY+c8nQQaK9mZ X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:JlKkaY6a1oH39A7DGB3EtlfH4NTGFXAeIOxsUayloaB09SpNKEiWO6wdFSPA3YXRt2JF9apCe9M+8WtwXOnjvHONBcxxhcCRlMF/JTZ3QBxRwvbPZ4AQE8w+W3f0QoD3bJYtRVRQr92r4xEzCb8H6MBM5541LUsGa0IeqidxuauZILfsxGYG0zEiZIzUfLE07+T7rb9t8Q5JJEYBkk3eKKbGB26MhFKb5DEancFNb8wOkeRf6dMZzdxU5mGbbywxyFOxe19Bve7SAiwGXnufDqS5GyohzYRuWsgZb2EtmDOKicI2rhsOoty1BPoshAxsg6il5ChD4Vf5QoO9R6S1vV3R1G8/xBslQ/M2B6Z17no=; 5:We3LYKppCvwKUS92V0TnIVNvQvwnYCT+H3wIz1CCVwUOIeWLYDaQ3qqY1Oil7cLoDGceE1z2wcINN9EYZD0GLxNSPoFturrYaGDQ66bLzlhmU/Ewh2il0EIKYCkNlbiaNGJWe4IgdM0qah70xJkaZETqVeHLVO5giMA7caLXxGI=; 24:4UX9JrKFlkDwv6l0B+1MP4qLcMIqIS9osQDnczvV9ackQGxv4w32jrHZHw37tCafTWvCdiVLdJNGr7SuP3cdC45bz7iFwkSwlE/t+Bq69Dc=; 7:R0QxqCJ0Ew7PEI855jO4LZECuiFMDtPKQ6K8HNIeC3VnnFVDkJ9dTiqezeko56gO0gJF0QwjLd/yJsVKwRkCf40uclbCvap1B4H6P3nrQzCXWTbRBwe87DElu2RAktg1GK6Pa0ImcIoKmJEClEnS/Ze3gp7KOPxXbpa2t0FZZAzlKrn1gVxPZI+EXJH4x9DD+gDIGd3tpwzi+Qm9N6Lcb8sw0ZKy0+lowB1C/H3Y4gdQRj1An3AnC8iHZhcSe/Q6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:32.6764 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9a0f74c-f81b-4dad-2afc-08d555bbebc6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org By the time fib6_net_exit() is executed all the netdevs in the namespace have been either unregistered or pushed back to the default namespace. That is because pernet subsys operations are always ordered before pernet device operations and therefore invoked after them during namespace dismantle. Thus, all the routing tables in the namespace are empty by the time fib6_net_exit() is invoked and the call to rt6_ifdown() can be removed. This allows us to simplify the condition in fib6_ifdown() as it's only ever called with an actual netdev. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/ip6_fib.c | 1 - net/ipv6/route.c | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index a64d559fa513..3bbb89d8187d 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -2103,7 +2103,6 @@ static void fib6_net_exit(struct net *net) { unsigned int i; - rt6_ifdown(net, NULL); del_timer_sync(&net->ipv6.ip6_fib_timer); for (i = 0; i < FIB6_TABLE_HASHSZ; i++) { diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 2490280b3394..c557362daa23 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -3470,10 +3470,9 @@ static int fib6_ifdown(struct rt6_info *rt, void *arg) const struct arg_dev_net *adn = arg; const struct net_device *dev = adn->dev; - if ((rt->dst.dev == dev || !dev) && + if (rt->dst.dev == dev && rt != adn->net->ipv6.ip6_null_entry && - (rt->rt6i_nsiblings == 0 || - (dev && netdev_unregistering(dev)) || + (rt->rt6i_nsiblings == 0 || netdev_unregistering(dev) || !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) return -1; @@ -3488,8 +3487,7 @@ void rt6_ifdown(struct net *net, struct net_device *dev) }; fib6_clean_all(net, fib6_ifdown, &adn); - if (dev) - rt6_uncached_list_flush_dev(net, dev); + rt6_uncached_list_flush_dev(net, dev); } struct rt6_mtu_change_arg { From patchwork Sun Jan 7 10:45:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856515 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="x0E06O3e"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw823khRz9ryr for ; Sun, 7 Jan 2018 21:46:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753338AbeAGKqz (ORCPT ); Sun, 7 Jan 2018 05:46:55 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753177AbeAGKqr (ORCPT ); Sun, 7 Jan 2018 05:46:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=JdJ46YufvU5ah554moEFObJ07FOFPa1BA4KItWHpsr0=; b=x0E06O3e8nxyc2PQSy+Ojyu6XPjEvb/3gAgDbQPBrPUj8T3/E/1y6xy6OiGfRkw1FnP4BJn609UZaS6v/G0F3cIMOlc+Cn2mKiVCOkwMBXwiWt/1me2S84+u7eyoj3M2L9/MJeV32knAxhb9ycZSAyHWiKu+VLH3U3JN6T6SbQQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:35 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 02/18] ipv6: Mark dead nexthops with appropriate flags Date: Sun, 7 Jan 2018 12:45:02 +0200 Message-Id: <20180107104518.31693-3-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b0364bd1-c827-4204-e027-08d555bbed7c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:qS7jEzwaotp+u3kq4qRddRFcRUOhEsqkyxW4ZKH4CKhEli6aIbZ2caYYFXbN/OjLTIvt6njNkSnTQanV+jPbqAvipmyxyhhSMQ+t77lugbY62unYD7kF66UDf6p6JF0TwThDRyquyn2T1VXk6yXG2NeQVMNNutMZ5ItyLjGw8MBlbDIea9MKK1bKJXPHCI5+hgu2hqHTm+PnjJDVx+YJCyrHcTaoCYbB1ZA00OKPjE2TFBnMFpajfaR51D5tBagK; 25:BgIQQ1nMUYppW+okFAQqbgM6olOPpvf0d05pzfBbgHahjIehZW6rj0Qj2d75LdsBSGBmsfZ5DDFuZFmy0WemPShOJrFB2A0pwSv8qivIJEaaekn6QTyMawIqKR88G1rgZhPNrk2me4S7x5ws1CWdKJ0hXi/khbpvAbmqITk2iqW542RUMiEYvr4MEjqdYZ7tIRhwj0OwJqFJEfC0Qnwfk8pw4QDDpyK/fLXtXOKZRA3wwb9+qkMs/ARFWugewzuu2YlpaIwCcB3F/ws0i1uFVToGLyj3eVWw991wAOV5Jhe3bu/xpFfVoStZ/2/XQ31mv59sKTD8qPi3KlGMI06DkA==; 31:X3HxavXP+tiw8f60OuVxApQC/yIboWTkhtuBQr4ufYSoqYbsv2h0RPk0rf9BQTAYQPKsCyn//LqplHj8PFIQTSPC39UsrMknOz7JJChKAFt7GJ0ciaM+a4Bci1VS2l/6NCIJ3ZLDRRo7MQIDBoyenwVFS3X1g8V38aMoAiMMKHy1UobeQ1VDd3RWxOvdGJIOLta6Wn3mBKkBtKcTHzV4brwxihj+wQqy9FbfcvQzYrs= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:EOwmZpXwBb+rZm2s1FyxEI5fq1UEVi0vBGbm/aT/jufKNBqPe0f0ddnII0XKj/IxQZJRf2IzbIbLnWCQhRxsgcd4nzO5scVqbHOcANSZb2vkS/C2refiWzKJF0+0LTyx5oIlq9Hc4jsscMOCh3Ar9IfHtNGE3r6xPlEHuDibN0VLETd71cgbeqyQ/zVIiL7dpx7I7FBKTvP4aYEKTL//GfoGPBSupPflwsljDFcceuBX5as0ayjr53pXi7S0tsKRR9vpD03/3USe13D3enKPhAqZOFi8f4ze90ol8LWFKT4xOx7+4h6CVLjdmm7rL0QuZfrR0jLX+1EbTXd8pFuglf7d8iBKrv5XJYzNxYnFsc5k8H0r9UXv0LP8tcT7y+0Pao4PyWJuF3OzxFOzsMpbOnq2tSbuPQfNippJkF4G6IuAfGV1VWVUiRbLLTiK8LlIxRK3SQ5B7k8HIJ+DWeKnoHFANCWgbrhpu+A+bxViDgD7A4IV8aEmDLSJpz9x2fVQ; 4:MrmRSNbIT3iS/f+Z8OUAk+NWGTpt9Ql75LHbf6KCV5l/SjG0tKRcqtYIJHa0eoHKfCXfM55L52TJu04ZDwXGOp5OaqCjNpDjO3cQJN4dx5YYy46VjzZyqOrrQqFozEJk0rVkvcjEEy0lX+kkBuOj5KCejlxDISSznzTghMqLvzVIZsgmnnbFE6V5ZXtQb9bIMoT6IB7d1IOyZUhb6JP1XWbexwFuXbQmqnnzDlzRx+wtZ65KGvI6gcuW6zQFDlBXAJmzr0i7o1a9yIosg8Xjzw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:uJhNX2Zn+9MK93LQiIwChEr5ol5xZSR7EOFE17wIgk9ZOCBNczypRRklGEMsurqTGQ6uiKHrrwga9rGqsgfbnnXA0Vg2PkhiTOR1kwkJMnDGyn0K/Ev8/yvjCCzDsX3/iyCTLROzpLyehsGlK5yIOZ5qiLFHydFEjJpPdsqRlCdfhIkQgZV5djDID/NBIvzKaLYVssT3idxUgr6JsjAyfAr+k20pv/BkqcbxXummxbod2Kk6iXzZMRhM2jQKat8ckG3NQVrJiC2UwA7iVPaVr4UJy1bmSOGUp99cK5Gh8FCIWhSxnXGMoQKRsLqTsTvc/HjeHQq60AkvpsuDHX7RvoVokySxW/tS8eW4YNRZlhXqoTmpfbMTSywkjSf7pUXQiQbVV4mVg5ESmbSw4JcpKRkW6/dDRYB+VlLjPikoPQrJcIoNivQiwcTY5fc8Sz+0ZUuYi+j6SNVCYB4Zhacw1ix9oxEVMNFJfoK6Ui4sQFaxut3pN/bEjpNunKIJRzx5AYBDTC0Bm0X25WI30j9k6e4l+NnJ/6yA5flzNj9gDnDIyURPrUgdIYsjbvuND7RA5lpJjOUoQmLoz4Y2s0fgfJp+TkNRdM94x4UzHVvjGOTFAf1+tpeW/9Z23NhiScnPb044Pqu5cPq268bneN2s953Lb5/K7sjWq8rovXLqC8QJWb9bUbqV2fs8V6ShzQUFMT094SHl6I1Kqr0DZm/5vHDdVQb3U65Tz+9KgtxrGhrJqS5pSyC3cNv9kUZa7HdDs0WFi8PkFSvCKzNUDcZOyM+JUI9A+tT51uXnkOSurwSfnPQXEwYXXsyuVcx/BKr7a9tdnkAExOVDMxB2UMIid8nH2sOaZ+YJMIRYhgkTlgZUZJYNwfa+HsEBZXhTJxPQDiarBRE8ev6NWqhtc8IYdEEbtBfw1rWTkjtrRwRUbe4wrngLUlPoyxPukwQTG65WLRfu/+HeWAIVhJTi9HVHIqbBtlgCuCTUjRV3SYiiS8sfxXKIdQQxDUW/rTsrOi015T5+I5BwpiKI0rnhT3iEClZZiH4IODnz+H82liwdAcgXAt2reD0Lte5PkffSugmi+QolaaYaTPBHxoZ8mEFqF14GpKH7Mj/Q6K/ZEORFIC2LwTFMbe/3MnHwyvmUg5Yapxi6peJL/vmGnKODW5/vP/ptDoDRsTUcMDC/3FmgdGK30Y4vIzPAPse/mwUD5/TcUClQdrfMS6jwg43POFk7VA== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:o54fGa3d1uH3X6Oaq5mEqLqVCSfuWtEa9Qt7kNkJL3LKeSSi3/Fz0A1/87b3a+d1dhJBks1gxMKj9DtYuGqF4UKXYskgmYfIu4oXG1beJK3f8bzaLS6OFT5oB1uzU+cEw+ALhLArr2Zz7dVuCbiilK4t+mfmt/4F0dbVCvhC0mSRnv/Z4KFur+eiqF4D+BxHX0cu6yw9pR4k3lqpvGVJJbzvL4fRfVOLuKD/VlXht5EzBf3Sec3CcS852+MGi1/GLtw73wCiw3TfLABuxpZfHTjqaXxTe78H6MJyxt5VYCtqM/4EV0c20kq2ua+4jwKQFEEaGrXxPCE7PIBmUeS89+MqPIomKwhY2UodrB2ykdk=; 5:lkWtugSSNoYKbBTVy3vSO0tHBvAJJZRx7KMdU35wtfZPrnUHq3mrKYSD7kydsvniq5nARo4be7SQNRF+y3WySfm5wuQ2/hZ4vj8y1PE6woxvAGM9zF5zFWYqFTM5J8rwRmlxDKbdGFztffcR7dGyaeODrrqg+uLZOecPbQjIgbY=; 24:TJ8ZrAUp7tKNYXR01dAzcqj7Es1JS/MEeSpD5Dq2gNd9AtjBn0zU2+d8lDDvRSxPVtchbfgQX1uYvBeAs+w1awp01/47t5dlHJCcELBvfi4=; 7:UHsAKG6c22OjK5Ffowy2HII2lqjs/uc3CgJY3l0m120PO2xM+AlQcbeeCufgoRe5ZCL9ofyTL/9uCt4YEwN9X/oTvwyrJkwQNlw+nhy3VuLLYm4E60hedSauPg2eKdGm/NAfTCT4vTJPk5bNr/sE/rhUWf95VsVe0i18+IVRR9uD3IXQ/XjquosM1R78gPg6WlPbtqGzzHTNYp84UpeIoxS0avibjyWdTA7cPwUxGn9gdlPO7j8fQz+Wx9m3HbUl SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:35.0359 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b0364bd1-c827-4204-e027-08d555bbed7c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When a netdev is put administratively down or unregistered all the nexthops using it as their nexthop device should be marked with the 'dead' and 'linkdown' flags. Currently, when a route is dumped its nexthop device is tested and the flags are set accordingly. A similar check is performed during route lookup. Instead, we can simply mark the nexthops based on netdev events and avoid checking the netdev's state during route dump and lookup. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index c557362daa23..f5eda0aeab55 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -3473,8 +3473,10 @@ static int fib6_ifdown(struct rt6_info *rt, void *arg) if (rt->dst.dev == dev && rt != adn->net->ipv6.ip6_null_entry && (rt->rt6i_nsiblings == 0 || netdev_unregistering(dev) || - !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) + !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) { + rt->rt6i_nh_flags |= (RTNH_F_DEAD | RTNH_F_LINKDOWN); return -1; + } return 0; } From patchwork Sun Jan 7 10:45:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856530 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="eSjOdFsW"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw9L1jCbz9ryr for ; Sun, 7 Jan 2018 21:48:06 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753316AbeAGKqy (ORCPT ); Sun, 7 Jan 2018 05:46:54 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753182AbeAGKqt (ORCPT ); Sun, 7 Jan 2018 05:46:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=iuefrvy6GQ3znp4Mwu0eSKVUCIMFhuV5KleT7iEM2qU=; b=eSjOdFsWtCh8WI6eNPOCkWG+VBcR7UqozBL9oaKMKg/kFthnz3GILFjYrEVXB3YkRNq0gWk0e+NbzBSyWymmeaBQiY7FWnEHYDXZ/AsM8WYL0r8m2nBolPYz+FOLhoTWkH3CA944+39X/xWK2GdSKFQUWWRxRWVh7fxe8N+nGGE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:38 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 03/18] ipv6: Clear nexthop flags upon netdev up Date: Sun, 7 Jan 2018 12:45:03 +0200 Message-Id: <20180107104518.31693-4-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7d52f297-9931-4ff2-e4a8-08d555bbef22 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:0/hZGDw0uoVzp6MYyvPKvu9mmgbgzOV7mldOod0VU24E9AUtBu5xOR1HXkXScblIDxEktmlE0igzw0f5vAjZ6UTfSYyyVX7qKiqvNJHDoSd5jURIHsf61vEmOKxbyo3YRmaFk42bbQt04O+eye/qNhoFuT1o2ULX/q7BU4y7w5mlsPs8LUvWDnmyBxuym1Qmo8cmHv3ge8PGnGirB7heZLc/8/0Y5MCkpI+jFTVhnFA4e/qYXSAFvIo02Kh02Ays; 25:KZo8uMX/Osi5gdTqI/C9SZoPZoJ1QyT/kxBZV08enRQtE2cZik8bLnamsiRD8lw4BuMntHqGIPIAi0W4T8QuM/lsEFusmirhROa4LdmyGaTshseOOJatv67qk4ThdR9NIfwodaIgm+/FppLsaY4/WBbsWmvQFefqg1BPg/1mwpSB3chiPqglqQZQNRwRJ+gaBdtMTOyzN/jSl3LNs2ZnLfBQw5iGtbk2vnuc2aWXnKaoTbCaEru1alrGbD1oQyisMVXFZy/1yoGb2aIp/6QeSKtJniyjiBvOFh18OsiwGRczeO07m8ul2Y6+YE6VQkJilEm+vyd5Rd7EB7+7rQWRZQ==; 31:60qeI1DGWd5vX5HetF5xFqWwUwt4FoAER1HmMXd/B/LUD1n5baG2WfazkwIAkHFO/pvwAkASdetg143i2c4VRN2rFW5NrE7jrJczAE7T+OaCjlmyyxJuHZpTFKYRB4PSs1H4Ret3Tm6wVBW+6cmHz0wb+Eu4rIp0LAprX6/iAzMMYZ4XYUgo1UMg0K7mGJve4hdUkr5rqrZ50MGxE/vRkbQc/fdsrazg7TAKwJfArX0= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:rkwBJeIZOnoVJt1YEL3LBynqSQz7GzDBetcGkG1/DT8pyb1Fd+6UxrMFwNh1GXhgoyOr51CpyNZ30dBTSK2F402O7C1H9JpLbjoUqa41DYmGuKNLK1naQ71NWAj49umWTBotOdr7+t8NkM+4YLo9tp5dKehLKH6n2LaEsmu0gfnNw+ytDteC2mluExFFqxpdFx0Fg+iwwhzUcywU9mojifNafAOCCFV7VfDf0guUUUfpPZrT7TxHcQyrT3++G0jbB+Jt5q7Kti9IibF/XwaOLiz1eOTijEMnw9J/N8Hb9dGIw5jo3WDqMl25WxArJUOVYX3No/BbwMf3C8tmRSTc9wmZzJKJ5RIwjxg/Uy2UPlAT2n/79/IA5bUACj5JhzugdFug5AMjQLcoC23nCCsxFsoPpzTWB2XFyV1779t8+pEhJlRfMnH5EU7GxeZXhKUAZR3AzwLHDWnOMfm9RiNugIryU03hizWIxv7Oh/llNe72idJ8CNyETRncUYGpzu7D; 4:lIsGA6Vj/JMcTaELQ6y5NTAt3P+oHQljC9HBJXHb14IsRKjjyPIVKSx2n0rqfC+JeikLnBHP55vh+dr0z0zhPXlnO2UAASWNX33yZ3ux3ZIvGbBFQRp2W4iEMuOpHNCdWICrsjMMOwh4eHsm+ymlyig1jOLVmAQ3WjdAURj9CwxMvEUElse/QFMUkn0IZ+z4kPsJjagjGeNX5qzo4/IjLd+Eyp7eZrB8M2T5Ea/XRoN96niGkxcLGlP4vvC8rjt6fTv1sD7Ab3K027qImUoo+w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:CdX0K8/aENesg9JFmjt+KDO+cpy5fUBksuk+xpLU1F4rqqcNAKmo5gE7/jWVDNaVvAgU4nR14uHZU657KIHWr+snJiEZ7ltIGDTp2ch80ajVrRL6313F3mQVNQeElcF6+uTobTzFKPqkT5rwnuKO0dsCqh6llJPJZ4/p+s/IDfpXtkkttdQEsa7KDG8OGDcPZBNNuMRToAsKdkMbTytNHrcu+mi0LSfgvi7TXNJuCiV/3RKyeSDRu5EL6Ejvx/C2Zzqg++ihWULmt5oGRqDbsA72Rcq9bJgg+rDdtrHNvvjE87nH2Yz92FkYU1OczeW0BK1AMpDqo3Vrt/KN7E67BlTuCQ5kTlLmlfd0Bo9ik3pOxw1cUHlnXH7dilJmsiDHUa2pW19ux0dx6gzKBv+qKkPA3/z7LUdGN1bxTXczMLjEC0p7BFJlKELa3exq90tqB82QZXsTx8lx8Jf992qIsh4NWHfGtE553XNnCyELTU1vuM5ttfD/Ey/NcSYAgiaYK8Ik7+tHQ9f3c21sDETdFNb/lsO89X0aZzfTTjeoPyntDIZLsupaybKOVhC963WAut4j/0II9kZG8kHgOrNUS9NbbClb1/g1qjT26AVVN8A8rQpg2/Zc479Tp1/xXRmHKBJ4e3bvZR2pPvRjeEimtR7z+33doT+ItEmL4a1zFABFN+v/dMTmdUzyLCEFKe/LuTsv/IFHewWft4jYI9SNPXpclCcZucr30Y++Uf5CNVjpEAqG4umcg0cCRO2gTVyd6fATMKSGOzZIiCZakHiIC9VMqFMVlaOPJT4TxEEvh7VZ6jIYvW3LA8f2g428zfIvzEyJHcR4nqSUIAgk2cazegnGXHypqaT2LGmhHFJu4mx1g7xq811ojvlX6XwGzNX90gkBYmnQ77ZT86wkamS8N6tnEFandS38bvFic/JnvDqjuQ19is4/Y6ktd3b1Kb1BZNv/XVcp/1zL7JySl2RsUPGYvoINrRQ6wU1jOwImMUdn5ouMuecHmxnD/40AapFvVPzsChBk5OrU0w1ttRo7uisgeoc0H1n1ss5FTUj0q4uc6smqZGYjDi8ynpLWhd5T91JwtZfB7S8FRba2+fMfs29JRhwXbJmIWFm/Cy330jysmCTKhxbJZYRAWRbdmYUnGME/V2ZFQeozDgHqxhQvuFDaYeIcLeyh/WEnp/erG7DWlecFWQly8OeOJ0PYVlsGSEzeT9JfCrnG+rC1Fj779Q== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:CmbZ9UlV/nG2BB5f/TXqtcjlTp/8UiY0qCazCnI1xxhuLacAtJcrHxj4AHknywKEmsL0DSqi6tdX6gsUrVCSC8Y05WVQwD8VhU7KPviKZD/YA5T2/qY472ku3vQGmwzzNhcgsWgcGl9iqTwx2D+aXL3EpF4aoSEzi7tppVT68IBT9zMr1KP5kX/Ug0whhWX2TmP9CDjx3X9i9XckmCjEk7tp0KqRGmiqXrskNPB8UAiFg21EuCEhFOe3mLT63Y41q4/W+IwySVgQdltzdsMYRpzHTgzez5jkDFrD7mnHzmrs8oUVGSNErRK5DSjsaifTxxYfl9FNg2xFtL+dnRHd6W9oi+UaXMmGWMaNYz2Yots=; 5:SMBYUvtl5aMRO3jM+mnAq+amk/WPN2rr0LajjXafv3iFURlFgSH/jnoXD1IgP/0EkKjtnQBPv4idTMpPWqGmR7Cke8ZpK9wnR+D9q6PJM1CYs6KoX+dlwUHkfPCzy91ihhGO3GLYvER6KUjSSJGsYX/m6+oYAmRaRbT3cD1mwGA=; 24:6/TUL4zxWJHBSlzgbGUDvFYGLFU7VZHLoAGpAMdAG6wEzXr3rLjKSZ/IQDxyKeP15dHA7i/xJgIrZvq/PwiyCrrWrizD81v5dSr25/R5HMA=; 7:2iC8QpFpMQgvctqM4EQy86sKjjF+9+EnJgGAWemcEfs2OWUQk9c385AKN+7jFQEf9ZD/Q+kO+mrWsOJlB29ladYCoiDtPyMnMlJ9N6pfkLivGi02C3xDvnWqUpu5jpDQ2kArwR6SALDkoQgFU5D+JGiTRzxvo0BdrCAze5U+6xQrX5jVZ3FfT1v4eVd/sTq2K8yM/0uu3QQp2MR3fGxhLQOqxYhkPE4j0lxEFsGyF7EV74CeTOZtjGg0xmA2PZLW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:38.0047 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d52f297-9931-4ff2-e4a8-08d555bbef22 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Previous patch marked nexthops with the 'dead' and 'linkdown' flags. Clear these flags when the netdev comes back up. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- include/net/ip6_route.h | 1 + net/ipv6/addrconf.c | 3 +++ net/ipv6/route.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 18e442ea93d8..caad39198c2a 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -169,6 +169,7 @@ void rt6_ifdown(struct net *net, struct net_device *dev); void rt6_mtu_change(struct net_device *dev, unsigned int mtu); void rt6_remove_prefsrc(struct inet6_ifaddr *ifp); void rt6_clean_tohost(struct net *net, struct in6_addr *gateway); +void rt6_sync_up(struct net_device *dev, unsigned int nh_flags); static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb) { diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index ed06b1190f05..b6405568ed7b 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3484,6 +3484,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, if (run_pending) addrconf_dad_run(idev); + /* Device has an address by now */ + rt6_sync_up(dev, RTNH_F_DEAD); + /* * If the MTU changed during the interface down, * when the interface up, the changed MTU must be diff --git a/net/ipv6/route.c b/net/ipv6/route.c index f5eda0aeab55..4796d87e0b93 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -3459,6 +3459,35 @@ void rt6_clean_tohost(struct net *net, struct in6_addr *gateway) fib6_clean_all(net, fib6_clean_tohost, gateway); } +struct arg_netdev_event { + const struct net_device *dev; + unsigned int nh_flags; +}; + +static int fib6_ifup(struct rt6_info *rt, void *p_arg) +{ + const struct arg_netdev_event *arg = p_arg; + const struct net *net = dev_net(arg->dev); + + if (rt != net->ipv6.ip6_null_entry && rt->dst.dev == arg->dev) + rt->rt6i_nh_flags &= ~arg->nh_flags; + + return 0; +} + +void rt6_sync_up(struct net_device *dev, unsigned int nh_flags) +{ + struct arg_netdev_event arg = { + .dev = dev, + .nh_flags = nh_flags, + }; + + if (nh_flags & RTNH_F_DEAD && netif_carrier_ok(dev)) + arg.nh_flags |= RTNH_F_LINKDOWN; + + fib6_clean_all(dev_net(dev), fib6_ifup, &arg); +} + struct arg_dev_net { struct net_device *dev; struct net *net; From patchwork Sun Jan 7 10:45:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856531 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="hG7N4n40"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw9R0jL7z9ryr for ; Sun, 7 Jan 2018 21:48:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753760AbeAGKsJ (ORCPT ); Sun, 7 Jan 2018 05:48:09 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753146AbeAGKqw (ORCPT ); Sun, 7 Jan 2018 05:46:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=jPfcLZzhWuSHvb9LtXx+fuwNFoZ8EpmrxhfSOclTwiU=; b=hG7N4n40/5PGuLrhVPDwuynbcKHCRF4IdFHzwwy6N8gy+S8WC5EjgSc/n2zFeb7BrSeecs4ndZkmpH1S+jPsISbXY+MkXQUN8xALH+ZHi/ztwkyxzqpMd9zOw1H4DYRp6iJxufD6j2PK/kSOZhzxwPSE8RUiAO5qS6lyGYQ3cm4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:40 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 04/18] ipv6: Prepare to handle multiple netdev events Date: Sun, 7 Jan 2018 12:45:04 +0200 Message-Id: <20180107104518.31693-5-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 9f8cd4ce-123d-4a42-3764-08d555bbf0d7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:Y1AiJebuZ2kE1uHhhNWKc4X4sc248Hpqm8MEVyZ5rg8EnBWOEgsQYyve1uTu8QmYClQkpmSV5qSmJy1WOIbe/l7iAVUXd/KYxRQLRfbLsUQ6awMyfkqGNSmpQBit5gBB6O9kNU2AGyzLzIcy1/qSCf9NQNya7ePbDgECub9yFxnjEW503oh+Ye4Fd7MoVpSAS9Qh5Evj3Z6ba9wK/XF8pivCBagL2SljG+ixXU9DrTELgoGFJ6vmS/SPmOHuc22g; 25:+5FW/j20qZpz3eLtB7fyNiwijtsEkyjwVZoJx+DRJL1yAI61np7OXm/kWSHpQfw4wLS8XsdxC1kN/c99yX4Xep0FNzovdko2OE2bxP4KAtiH2XLUjtQ/p9j+VPzRz3TmLX9uOvB6B1DVxvwcRwzSJMzBfzMMu1VlvnQITJM1LWLJl8bcFQXu1tURawUsSAJ10VmQ9/ZNoWmP04QcWQm/tLxQeoetF/dT8O2GBtT5SHXzBAhbeeBGB8u4EzMgze5YWpVhpREjzHNhYlex8vqUJ+AGF2ZksLXRkkGHwKbwxPHjDfxViPYizeptQ1Sd7qeEjuAf0vxE5fXKzxeYMyFVvQ==; 31:JetlIwxEjq2EzNQbh/2nu9CwDtYqE0Eh3fLkZWkCW2hgdtGOKFLH5YwZKadzLopERSXI33/i0DA18TSMZzZjjqf8ji26mCgBa+bcq0OJojAImrETSfTJ+GDGgAsPewZ9oOsO6TF8xqaKXI26yinncqnj8oI0bkdnS6mRhhO3oVH3LNmf8VhlaWGsqGaDERdePiWKhbE6bbvEn6XyyWpm4ICQ93IqZjyFwFJmWPpwbms= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:7ySjIwr7DfLuFVmePWN33S86Ifo2b0VtM+Eb0WFbRxi573S/DKa7cGegc3TZt+X5eJoEJD67fxQ2/r13+CGpuTp6uSWiNvQPFHVZUArbjd8GXSFbRkEqQyx4Gsxptu176vPmC5Io10aBkmNLXW5bywEx5gaYCE44/4ell8PXDlSGr4IebwZpWOPkbYNujxjIZSQa1n+Fua1zyUqzqnqwAMwrafekAQqHNckkquDVj+s1CgIkk9/ZlrdoWVrj9dgqbXn+LA1iDnX73z2jO8GkC5qQrknWJv2YOeWXwTdWDzGbH0qLKWgSW/80wtAtB9YXi7nNOnGZNr1VE+aov0NtcqjgMieBDO7z+kAFDX5kYpi/oeuIpzWnuDVLJ2XpySsVejv7/m4L//wtkHhttS5XdKtLG+/CA7cGQiMPMW03kvDwP2r+mWxqeQJqqDTvkpyVf/4JNBf71mWhevYRRi4DOwMvhIUw1b4HzhroZdj9cwyXfxZcTFSU1eeGuSkfIovI; 4:kQPmHR91dSQbHbqe8ekVq9D1wSpX4BBfGmdhPNSK19sdL6EK2sVf3TMhoxaZSebjOM8YpswQsTfT/77gnvx7vaSranPtw8IZusTKLZB3Ag4YEW/dAsVkRQp3qjQYYcnGEo1RzK69j4HNUuCSt8xOCsF+bgakaWdi2FKOaQZGmxCgvdmxqTaKEtbw0//fXhoMcZFIFtdZ0AtdXbl5kphDOPmPLUzH7U1G7+z1+dTVnpUdYCzAjqhvXBW4BxKJcRNuNCj0wyRly60Hp1HsYG5BPA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:Yk9o33j2tHIDBgNYwya86oYn/xxS4xJMAkHsqe7awSMi4cKzjGi37H+NxhXPN/O0Liu2VJZ4mbs3sMlnoXlNSZ6VDjPLFJMUfwK2luG3b/+FYNgPyWf09KMrYAc/4jlec6VNu3OiOG0f0jkuFJYhDrOkvq7DABxEd9NGWypsIGdg3b7W5E5YB3VEJ2fB9BF8/Kgr3V8TNHn1+6ZahdO2pupcsk6leCiXaorABB7+1/0M7Z2jkAnyLj/Xcr667o0ei0c2n55Dq4ctfTZ0smXX8ZyEmkrqVi5JQQF4wYYFFABr3jZqzLhx5yWmVKtwU+y5yXD3IjjVOg/j14ANqZCFhwcX64WUfZhEbxFD1TzqW2x9fLsC7XxdNImzOd+d03EZEhx8UlrdN9FfouPtct6VIK8GPq1P7wxNVhgedz7spNQjtPQsUpwNA/in57QzjtwSlk4XsGAcXYK1d2a6XAi7FIX+gxbeBfhVUeE7/8OArG2LolmyJj2J3Wh436p0EokDZDF3mA9whLVSixUa6AbvF4JuuwCx1Q9/ebLfW5+znMhRSaUzb04MIftw3dbqbGImMV1INjRi094FE6Fe5rUQFicdjeSFAtBPCOndjxrBHIDZquEbMOmb9J0d0UGxiE4WE7BqCAv3JYApVUtp/QwpcHL35MePZohuD6KbY5CQA0X3DEHGlhBo2hU6yT/cKasQ6KWKHHdhW2PVkfLHcQMXV8p0IG4E+b1TE0088qGEOApjBBwl9PpxdoN2BeoDqXKu35Mrk1kv3gSezx5wOduWtrtw4P8zam6c6MmWkrZAppu3ye/ktPpEnlzVzUGn05x6BhnEZ4H2hTP22RlLBgfZTg2wky0upIEtodn6qqrxWp03iCgAE3T+VeO2HOyJqc3ZR/ApM7A8n/SsptxdSP8ixhCWVe54oG2mE4V2s0P3SA4LnegvDlJdhUn9rerJqJK0ZMP/j8hmpaJ8i6Z6h1THxuvAZrzed9evhsQhJXvOpEF1LtL7dtW72brkbT+iz321eaoDIOtI4ZhpE/62u9S4hRmCxvFC0MQ3PLbUj4H2uJ/uJ0E/LmKOiRQ21USOe2JGf8e/4ggY8mAWRyq/LX92NJi6a3JUQM29ZBZWOaW5Q3NO9m6CI81ST/1s8AX23zRvzce3C73UToZNtaMJTrEJnSAoZbi8CXmJUN56QhxtD+br1ZmVfEUbqHJyGtRxIMjwK0ILXHuFU9qu34CMPV80rw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:QJS7THHlYFu3Utzr8CM7EVm/8riHZ+daoq8dSA/0ab7O4TrK8+iRCg31mdpQiwind0IfRwfVks4qqIkU/El/zSsbNHy0nQOFfZLzlh9IlcD1NHuGhILS0uMJhlwyr68IAzY62HFIT8CTFL65cCdGeqQ9rLGzSxyJ341a2TBUSFQW3Qh1RNmqbFAmPYOdtBz8tOoKHEmWsI7BF8sjUbQvZ2VNIBz/s4oMe8/hRpiwnLhEpDDHxE7Ou/hB6EUkWZtLEW4I0oY7jdItlYA1To8xi8oSebMPhA1u4klVq2mHcjYTOHEsR7PcLM3WSQ8ahn5WtFWDwHgvcYwNS5Yp2R+hb+CqUd1xbuigwPa/0fclSb4=; 5:Edu4kTykehjHGkX1W270aOFCgazsnYjjB5U7cS9tFDoLMLluzEvx9omp+t2zC4CNIBTYod7pCg9kGWVhMiApVFo1px1WG5HAXEdWrCrjDjwqOPYKKkyBSungtc2N5n+40NPAPMwNbWxRFbodvJ0o/m7AAFU39iJh3ehDbleXYDU=; 24:NJfNBVzn5ZPdJ97DT4/NWBfbBHoIK8Sz/yImc6zeyFSSjHHbElGo2xkGHtZIuPupWqav/tjc5tPNYWAvQSlYJoFs06LKBeSOCkGFXFhRx3A=; 7:ctMf9Llp5I/KwnDFZ//xnt/9DZZzj0oBCZmJfbHbbqKzk4fwzUDzwWiYLq/WIdvSk7Z6Mkv8MFKJKFbOCmzNQOq1m/11o+80z4lG4Hh7Kn71UJJBm2Gx/vFqD9lqRfWtCDrdq4sSStHK+NFybSk2WGlcuv7bYh4wKge9J01/hZo1QYGr/vN6CXoY9a/vWfx/2GskF7hoLdDTH4NZpUHaQbTnI7x3KcyJ05cQusz1lHCBfSOYOaE0LUV1tr4kQr40 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:40.6767 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9f8cd4ce-123d-4a42-3764-08d555bbf0d7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org To make IPv6 more in line with IPv4 we need to be able to respond differently to different netdev events. For example, when a netdev is unregistered all the routes using it as their nexthop device should be flushed, whereas when the netdev's carrier changes only the 'linkdown' flag should be toggled. Currently, this is not possible, as the function that traverses the routing tables is not aware of the triggering event. Propagate the triggering event down, so that it could be used in later patches. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- include/net/ip6_route.h | 2 +- net/ipv6/addrconf.c | 4 ++-- net/ipv6/route.c | 37 +++++++++++++++++++++---------------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index caad39198c2a..6a2f80cbdf65 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -165,11 +165,11 @@ struct rt6_rtnl_dump_arg { }; int rt6_dump_route(struct rt6_info *rt, void *p_arg); -void rt6_ifdown(struct net *net, struct net_device *dev); void rt6_mtu_change(struct net_device *dev, unsigned int mtu); void rt6_remove_prefsrc(struct inet6_ifaddr *ifp); void rt6_clean_tohost(struct net *net, struct in6_addr *gateway); void rt6_sync_up(struct net_device *dev, unsigned int nh_flags); +void rt6_disable_ip(struct net_device *dev, unsigned long event); static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb) { diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index b6405568ed7b..a13e1ffe87ec 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3580,6 +3580,7 @@ static bool addr_is_local(const struct in6_addr *addr) static int addrconf_ifdown(struct net_device *dev, int how) { + unsigned long event = how ? NETDEV_UNREGISTER : NETDEV_DOWN; struct net *net = dev_net(dev); struct inet6_dev *idev; struct inet6_ifaddr *ifa, *tmp; @@ -3589,8 +3590,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) ASSERT_RTNL(); - rt6_ifdown(net, dev); - neigh_ifdown(&nd_tbl, dev); + rt6_disable_ip(dev, event); idev = __in6_dev_get(dev); if (!idev) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 4796d87e0b93..194fe9d9cd85 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2344,7 +2344,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev, rt->rt6i_idev = idev; dst_metric_set(&rt->dst, RTAX_HOPLIMIT, 0); - /* Add this dst into uncached_list so that rt6_ifdown() can + /* Add this dst into uncached_list so that rt6_disable_ip() can * do proper release of the net_device */ rt6_uncached_list_add(rt); @@ -3461,7 +3461,10 @@ void rt6_clean_tohost(struct net *net, struct in6_addr *gateway) struct arg_netdev_event { const struct net_device *dev; - unsigned int nh_flags; + union { + unsigned int nh_flags; + unsigned long event; + }; }; static int fib6_ifup(struct rt6_info *rt, void *p_arg) @@ -3488,19 +3491,15 @@ void rt6_sync_up(struct net_device *dev, unsigned int nh_flags) fib6_clean_all(dev_net(dev), fib6_ifup, &arg); } -struct arg_dev_net { - struct net_device *dev; - struct net *net; -}; - /* called with write lock held for table with rt */ -static int fib6_ifdown(struct rt6_info *rt, void *arg) +static int fib6_ifdown(struct rt6_info *rt, void *p_arg) { - const struct arg_dev_net *adn = arg; - const struct net_device *dev = adn->dev; + const struct arg_netdev_event *arg = p_arg; + const struct net_device *dev = arg->dev; + const struct net *net = dev_net(dev); if (rt->dst.dev == dev && - rt != adn->net->ipv6.ip6_null_entry && + rt != net->ipv6.ip6_null_entry && (rt->rt6i_nsiblings == 0 || netdev_unregistering(dev) || !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) { rt->rt6i_nh_flags |= (RTNH_F_DEAD | RTNH_F_LINKDOWN); @@ -3510,15 +3509,21 @@ static int fib6_ifdown(struct rt6_info *rt, void *arg) return 0; } -void rt6_ifdown(struct net *net, struct net_device *dev) +static void rt6_sync_down_dev(struct net_device *dev, unsigned long event) { - struct arg_dev_net adn = { + struct arg_netdev_event arg = { .dev = dev, - .net = net, + .event = event, }; - fib6_clean_all(net, fib6_ifdown, &adn); - rt6_uncached_list_flush_dev(net, dev); + fib6_clean_all(dev_net(dev), fib6_ifdown, &arg); +} + +void rt6_disable_ip(struct net_device *dev, unsigned long event) +{ + rt6_sync_down_dev(dev, event); + rt6_uncached_list_flush_dev(dev_net(dev), dev); + neigh_ifdown(&nd_tbl, dev); } struct rt6_mtu_change_arg { From patchwork Sun Jan 7 10:45:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856527 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="x+X+KJNj"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw952Jpcz9ryr for ; Sun, 7 Jan 2018 21:47:53 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753378AbeAGKq6 (ORCPT ); Sun, 7 Jan 2018 05:46:58 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753182AbeAGKqz (ORCPT ); Sun, 7 Jan 2018 05:46:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=w+XMmhbBRQwUOBEDGbuyx9+a1m3mMMWb2CwhCzpU/F4=; b=x+X+KJNjhYZZi+2p7M84YDsJGjYLq5C1h2zgaEdvZ4ajbjD7Le4Gy95XEK6Cl7TTv6qkjr/dB5gQE7iqJS86aYrAW2CEwhXw1nf2DnZCGxn9dvBZ0gzQFouldzC/vm5CvKnHbYoAZ8LlRhAo+GjDgkLUnnL6JlZRACCwHFndGIU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:43 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 05/18] ipv6: Set nexthop flags upon carrier change Date: Sun, 7 Jan 2018 12:45:05 +0200 Message-Id: <20180107104518.31693-6-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 86707f07-0061-4b30-ec8b-08d555bbf28d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:1QKbKaF3kw2zjvZC+ec/rlh+09JeyIrbX5IzYm5izVKdBEjKO9ryF8uDiKgOz770iR7ogW6x1D4Gz4lqLU7IPlGsUIGqh7g7Kn/NwK35PaKBJn+WEyA+Ui+UOJsydwROO2K2+VvI7PqoAzo56Bn8vfN8bIECfASFS1RKR9G+V9+W1Q5AARXZUV5DjqURoA47DbdSZO8DK+AJmS11oTE8ckXsvLye3JNxvBiqSynroF3dLFbWXj8/UFuRDPaTwXNm; 25:SqzxahaZFJk6GAAgPfuK5y3sdTa2ghBHGBRxOCeBoVGzZxXYzDuBWu1Rgr5iax0xACFF/GAS+5ZaPko9SiTyl17JehrWbkIG8Pi++oFmpEj/TLpVIAE0N9WroYZ5C0FqQ/K+gpD6C8SvfHEQY8gcFh8I1avpatgBJA2VQDMW3WBZANZOj7eGHhrOan80PatDxdnaAwl8mGJ4k6uvp7uXKDNb5qH0PE3NrZmCIoK4BBUqmoGC42VqxwY5GDQmNVUXWB9fPhbR4sEAZPZKnN9k/0pKTOMxpHY5VTnjWQhJrF36B8nKhQ8YLAm1F3tCDQCibriFEm/wKfvHDdZe1k5NKA==; 31:H0R79C1UJpHPBATz2sDS8JLDjxo4EQDHkd9+rpEu0mryXF7RilkkPMwSaHEHDkH9tZCjgB3m+Xt9sN0gf55eHNx0lGv+6bWPF5E4mY+UsAgOwspeAqtT6lix3kxLdUhAh89YPYEXgZod4v7CHbty6J+Q42NTrvobSQyLRJ/bD3Hz9lFvaQnA4gObH/H+gd2A2h3nrcBi4mM9of5fENIuN0/HZf79Pn0mnCcyPdOmBqc= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:7+TmK3gUda3LtvtAhR/SKDZLo+FO+E4GoaExNyEknbn4DX463ge/chnIM+oqhkrWK16VsLO7EwuRNS7gwoZKeC9wiO64+zHzEQQLhacbxRIaG4CgqPXFaBqeNzGxb6Vxz538/mWEDzIjyS7NPm/6Kvz6RfyyNCptv+/lfvzNJf3Rqs93pUWF8rdbd+RT5VqSY+8WnhluWWRuCv9ZG7T8/wvEhEUE2MHzIeH/XlRmGLqTLS6XWkbjcaobzZzxgHEt4fbsyZGgE3MAO+IShDLq+8CQP8KjCi7CKyY45vp/BVPF6Lt6IgoUEb3bXdvXB/ljEjKKryuFxQCXPkBnnEDWydV/aAkPe2nKhsrXcwM646Iy9dv9oyDuIH09igY0BZcnHsmycs+PtlgLpPybJ1xqILATvpTaOP4+Latx2L+6yCrwYlndqjVW++AsfpF0Js/eRnGR34GHrribFRsmyFbbLPNw2kbUPGRVwpogVbr5Rsm93HwE1ryw7xX62PheIGuf; 4:/nvOieFjVfI9NNY88TH1bfTH6prcuB7JxVFR/Kk44lcSDe2A3vxn8FZN5QfapPvRmG0bFxVSXUhnhIV/wAGjvyH0x2Z3zBRSiiuTVDFkIuUtcNlozdhD7cSFkNBcsQOCHyLnWQq8M++RfUl10szjXApsbVZNYuh46DOPTMHgELaXvp3dSSwMhZ225Kp3EQ/WFvMLT2reFyLYGnG6NR8i4pwyHY97RBkn72qPegYXudOAWRUzeTbM4uEMbsXXYcwz46RZdKNsWLMFELNySNohNA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:Y8gho0wRoBCo3DW3K8z+26av2njWdR9sEon2NkX6qmpsi5aeo86sf4tjmQZ6P4RqrFziBlHM43QK+QcFQNTmhV4f/5sVwWDzfuBPGgnVqvDZ6CwKe2xiKQWYbz50PimqOlDDweVmsAdMekwXMtSaPN3AoelUfJqiipVXQl3qoQIWve2HfSopEo2LseZBItjfka/eExhzkvgtdR3dXTteOIhj0ubBYAOBpNmQtmtqZPenN0dxYzuhtf9ocoI7ukrhI/zdJS3ugSMCUDrq9AAYLoq/jFNJvh23nDkaP1nGIrW4JhZK3oQLYi/oaGJhkyWRf/3Nnbvrr3kQp+G7zAP2cca3pqrtnt8qM7QIh/YyOLadlJlMUbNiveIZ2dFpgE6efv3Wb6ADtxzxWhjKTFJqC3/i4BCkca0Mpu+a4JQrnGUPFJ8LFDsPt2Q2I0pLkJgWoGF4BNCJiEFi8xZfkZGz7ZRmt4QWbA4ehKga11nAirg/YAB4DfrbSrYioRL62dgSPZzufb/uSb0UoJRv2NmrWBMi3nvA04vvIUxFi04cLmXGALtEbgfqzAjWqcj1bPHlGcX0c8tC1Yx7p/3gV6py27+sbahsRF6jG+uDBbq0IPWqu/33d96QhIOZGEQjfM9qxgVgfacEczHN90imLk/zx+fB+gOSDGrXEBoav2fSlNeF3/+fGRPQSFnb70lSYjS6se5Z1MHtcPDRErMD+N+upYFSmfMPrBvhhkS/+NI5r0uC+14gqTUOFshlUQ5mwdo56LGnar8T/fBVT2WCH6+Svw63ts6j1zOSbbaFBnRlEt3jBAeofG6NwDTIjGHE3cVdRhmwORyJKNgDOOHNHeKKQ+lQXhdupT3mH1VhPVAGRWqSJXCWr0TEDO6FWG574PyMlp/7hBT3i17/FMeoVJO4jYQZCZhWmINZ3mttmcz9OChJNhgcc2W5cNuabmlVonjwvqJR2/CHtOOtcVt8FaFtZosAUFzjsL+Cpr1Tqgy2y88LBxxPNe2zYJW6xGXrMXIryMaOms7SffhuoT2AFHtN8uh90D4YpDhZtHK453oF345oYnhOIvL4ZQJ9GIJYZZ81FHIQ/oRbWfZitZ126ooEFahE85RW6NUR+ax0BJVr1ncbHxsWqDLmVNUXNQxWhPPQT2OQi6KwyRiIB71U7z0wSROnxxjtjesTaYOqKbyGg2Q= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:kJJY4xDoKgcZFlrIhYtWRiwbdekVm/hFMj1EwniGoE5ezjDIDCX0EJBE8yQ3vXA+WuouCxt+LSjLDqjmR8utrRffgy/hqpsn6z6os2qD3rtI5LSH+WcFSa0yJh82nPKMAYav9aT2e+jBnrcPN3IsNKf9WB/AjawuDFtHowQIoOkXtF4fL9kXHUHLfe/cf5o769by/LpqjjJhh7393dPLu0MI1iA5nnEh9hgvDUByqeEVMvFUI0LzGPlb8cNLmUSyhu3/JH2ws3EEs+Z7LwbWu0a6LyVO1Sf1TaqiD/qY5Y1+CMfAXmJl6aRxDmAKuGZQItHwoVJ5Q6fbSWPDlf1eYAMBMhlpfeGEqGAjaL/Rwt0=; 5:8DgYyyiTL0aQ28bx3q3qlqsuU7niWfRMAtRLb4yJ1UlxANjvEoUIf4eep7X5z3AAlvLQfEO9Bzdc/Yak73fOa0uEUP9nY8ZWI+e79p3x7SNC8Uz39iYFjdz5YFjV5uWZmXtkPfl7URgq3Jxz9sGkH5wfB/Glhasdk3gn3jXcdGM=; 24:IrNeAhwsGSDZQ3Oxkeuuu8ypcCGjLUE8BsVHF8fh81FRuuQwtZHhXfUkdSOGX1DaTs+9a8ky85y4KE/gilmUtekrfaZYgzDKDaMdlyZBHig=; 7:MfRtn7/yd1l9/F3GWZtz2x+bE2GdsYOVthuzMCTtGmpiZBaUx6tUgI79+ANFeCB/Uz7xTWFuV+7FetCJF9olMzPmbSIzxYf0GP+vn3Odvv4mlb9Hp0hWN8oONMib9tQQBZBQ5XEVkNx9mkEKKgsR4HAkYyuM1QwB1ylW2S02MIyh1UfUgRG5eA0U1CsJMn7CDi+VN6rSPlj+hHxmObWg/n2TV4Rt34SHcfUHLMRLciKliw9PTTniPBFizphL9vTR SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:43.5362 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86707f07-0061-4b30-ec8b-08d555bbf28d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Similar to IPv4, when the carrier of a netdev changes we should toggle the 'linkdown' flag on all the nexthops using it as their nexthop device. This will later allow us to test for the presence of this flag during route lookup and dump. Up until commit 4832c30d5458 ("net: ipv6: put host and anycast routes on device with address") host and anycast routes used the loopback netdev as their nexthop device and thus were not marked with the 'linkdown' flag. The patch preserves this behavior and allows one to ping the local address even when the nexthop device does not have a carrier and the 'ignore_routes_with_linkdown' sysctl is set. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- include/net/ip6_route.h | 1 + net/ipv6/addrconf.c | 2 ++ net/ipv6/route.c | 23 +++++++++++++++++------ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 6a2f80cbdf65..34cd3b0c6ded 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -170,6 +170,7 @@ void rt6_remove_prefsrc(struct inet6_ifaddr *ifp); void rt6_clean_tohost(struct net *net, struct in6_addr *gateway); void rt6_sync_up(struct net_device *dev, unsigned int nh_flags); void rt6_disable_ip(struct net_device *dev, unsigned long event); +void rt6_sync_down_dev(struct net_device *dev, unsigned long event); static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb) { diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index a13e1ffe87ec..2435f7ab070b 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3438,6 +3438,7 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, } else if (event == NETDEV_CHANGE) { if (!addrconf_link_ready(dev)) { /* device is still not ready. */ + rt6_sync_down_dev(dev, event); break; } @@ -3449,6 +3450,7 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, * multicast snooping switches */ ipv6_mc_up(idev); + rt6_sync_up(dev, RTNH_F_LINKDOWN); break; } idev->if_flags |= IF_READY; diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 194fe9d9cd85..2fd36c7dd143 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -3498,18 +3498,29 @@ static int fib6_ifdown(struct rt6_info *rt, void *p_arg) const struct net_device *dev = arg->dev; const struct net *net = dev_net(dev); - if (rt->dst.dev == dev && - rt != net->ipv6.ip6_null_entry && - (rt->rt6i_nsiblings == 0 || netdev_unregistering(dev) || - !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) { - rt->rt6i_nh_flags |= (RTNH_F_DEAD | RTNH_F_LINKDOWN); + if (rt->dst.dev != dev || rt == net->ipv6.ip6_null_entry) + return 0; + + switch (arg->event) { + case NETDEV_UNREGISTER: return -1; + case NETDEV_DOWN: + if (rt->rt6i_nsiblings == 0 || + !rt->rt6i_idev->cnf.ignore_routes_with_linkdown) + return -1; + rt->rt6i_nh_flags |= RTNH_F_DEAD; + /* fall through */ + case NETDEV_CHANGE: + if (rt->rt6i_flags & (RTF_LOCAL | RTF_ANYCAST)) + break; + rt->rt6i_nh_flags |= RTNH_F_LINKDOWN; + break; } return 0; } -static void rt6_sync_down_dev(struct net_device *dev, unsigned long event) +void rt6_sync_down_dev(struct net_device *dev, unsigned long event) { struct arg_netdev_event arg = { .dev = dev, From patchwork Sun Jan 7 10:45:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856516 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="m252JQFP"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8528qPz9ryr for ; Sun, 7 Jan 2018 21:47:01 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753386AbeAGKrA (ORCPT ); Sun, 7 Jan 2018 05:47:00 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752827AbeAGKq5 (ORCPT ); Sun, 7 Jan 2018 05:46:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=p2dtQnzm3LB/L0IwQMRWlEUfzTZR+2+xnoKOFWLtwiw=; b=m252JQFPxES59Sw0b0JDv/x0HnaUU7MC7WczKdi968KDXqzZZusibjGcoyXXunsh6uZopAUfOmiUAi1exT0YuMV+wW3UPiAczBjBsz6+USKSbfuB+Sc9491pyCP/aIfk79qmXPujN0TwhuNkxvK+ZULXUjRdnHNjLlLJXFgOhDk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:46 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 06/18] ipv6: Set nexthop flags during route creation Date: Sun, 7 Jan 2018 12:45:06 +0200 Message-Id: <20180107104518.31693-7-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c5ff8a55-497a-4023-4056-08d555bbf423 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:Z/UKoi7SuVzor4EHGGPOg5aMOmQ3Cmqi3QYq2m7xW3lhuRNNWBJ1t/D67AXiM0YMl9TrXTVFIzObRa0JK3wYNsWu7En0WncqgGwkw3xvAiKltX5B2pSg2oYv7j6a3nTR8vQWMT0E6ahhlSLNLmd23CZnJ9MLTLCVbbyxAzMd8wMQ/W8T+06EB/VooLFrWsORar9gnDIs5dEFHkh66zryVC40zr2o1wrx61RGLKHD6jwYiuW0wjS7AkLlQMy4xak4; 25:Op1k1P+wJYXmFa3yuAZeIvFdvjIXypOesUnKrHhP2s8j7P4AeXaLffP3GJx8BLos9fWbCpxLfbgRScLkHJytXfaLDj33Hz9HsIGoiO6z3XUbvcLAWj4iLnMtPxAJslacFLYUSzz0YR0k7oRsYZgFZ7TnCo7abjunIDNw0hK85xzUomY5l3YbINRyWGfOknhUnQsVjhdGRzQMVwodIVucpj6uGrO8hcx8mvlsNL7XNKJwOcnHnnjZBAZUUuLlGUWbu5hTkY8nWd7QLmjAdo1la4B91mnVsAR4i+nMM5hoNK44LFCga9cn9zvvpQGKBnaIv1F309y3v9aRNxyE/OMMcA==; 31:UQzYNNXYyknYFd7BS2AI9PUFJRT81Zd/Msr56l8lODupkpuYBrfJzr5h6pE3qJrkqYSYu4jcQ82egTref1EBxfnNa+zm3e/vs9oW9/EHVScdQkLH8lW1DbqqOOoYBNYKD10wdOwdAzfqOH9OKl47Pd/pSzjkEWFhL+Yu+Dm3oGDMgvn4jz4GLttHlPuS8xyyUiiYEPKaPQU1ub0aTYnZ+X2jOVUPESwlN2AXhScYkFM= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:/F5xrvcZGW371McOZdB0F9e4x46VIfrhBqFxEcGxHb07ythI+QJMdFuS8lmrmZFFNsLeb8rMgc64/4nw5tFhnLDkFWKzozhFLwM7rhwn3dAOm1fd7X5lEFR52fZv4VG17qT8qT+wOHzKPNpk8830suCjSa9Jky6LXz7YqdtM3/eWGawYkeZ1y233Vvnga17kXhXwlYfhzsaoPerXqCuKGwfGTU6ScV6JuEH68mh0ed7Rm8yg5iOICBTDb/TDpP+tYJ0NNMGkLEFdVCxDrPqcHGvDUa86cGhRsD+h5Fiv4U4T3cFCUFDxVVlICye2ilSeJH+lj1saHKBZZA+o1GfvC8ZvNnXBtHikR8IZzIpPZQ3GaIDa/1gTLf6/fmyseCZzQfRGrCr/uKNJsg+25+6DBwqdcnlBeW3ez/Y3AQznqMSTb3iHEgP9eXYBWtyjlZj+YxdghEFhfIIp6XxtysCN5Jep1KZC/ZVKC+2eT0TdQ4r6RcaxybC0658lV1T6Jtny; 4:BFQN4TkOq87LRNFmD9j3TzWNSGhvr26yJ6ogYpRPzjUWKq3klJ4VsIVs4tH1JdA2sGDUobJ0c8E35O/tT0uN2b0OXU0kroBL7O4qcy7iqnl4vBXK9rRRt4szP3DU0+nr/O0qNPgiodu4O8aTZZNx+ie+H+N2ZlSrHowCXor3+crSrI9uaD6X6Y5JRDO9BK6MStACDChZi9lwOnL/ui9nbVO9gy15/jMtSadjEGMbQ/Mloou2wBwjqKvNi5MbGJCDGL4XhGUWcryKRWZZS0F9EA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:GNDz+5/IomPld9c3gtK4yV7mXrN37OYDDlm8gw6C+liyaMQqLfLOTy0ERNE5WE/isjlTDkd0x+jRTvPnWAU56We9mdoEJudd67iEGEiU0GcYBqWxK5vHIQx85jy8WcxxAQx3pjuzE2MPB9UhmekJGlQ5UP8XssbcK7xypFt54GNCC1DbCMSHPNvCsUA2HOCIEWFPL58tnFH+lpsO0taKbdDG1+i610UDAU94qGRKVWmoP8RLca6WQYM34UXm6IUJf7mdluviXbr5843VHjxbWkTwSu/CFkfI5yxG/YVyDEzMvw21G9YPy5qiQSRc2MVAjqs04YlCNkZd0+xGy6Z7LNQSi7IoBRHnQiav4R+6mVkteXt7jQ0GXZBDmwMRyyWxYjkM1UjnDvi/sPhNqQ/dNcnDWvHkC36dVjPmHNMGiZ0BWSlTkZA6Mi9ry1LYBk+5Vag20Q7OftjuBIPsWozhRjDJPceiTgdobpoefHzn7vz/lCpUKwbkCI3nMMW8YExqJoFEmTB22i++YPqBeJDh9mkY0967UexscwxGf7Tz2PQw8us7Ly0VOokYhWOT8BRgMYe7/PyiGOIEDX6BVcjeNBb5Li+zpeoxj894j7IaGo0AlXVQiil1lplMQQCinXeObwoKn4O4zmjryWjgJEa9VuSLfDH1YhHLiputH2+7X9+J+uo63koPUcYIixkd9rBwpV0niRXIkCgQ7SQSDrRi0mnKczgmWN1A/wCiuRtnFMhx4HadeZd19hdLELZDljwIk3Ofs7UcJTU8mDDtB2cOGegfRpnDKJlIXsZ761WVz6dAZHSXxiuFnDrYOhPMAc0h5R2ex/qMc794ChD/goxii3oZ0VPa8ZRF3DTd89F5TSdigGv5NNZwDVY9U2kJ4jLFxRp3n9ftbHeIqOS3oY5H9WbZYYeaDQHdaFoG6tp12EBHfXdCKZb9NrLJsGGNCYnTD4ep3MgZo0z5eo47rQ4sNRZsGf45SMNGbM1BWLjbPeVOwChZcSSw6NPJG7Ls1yy5Tw+OxMBudIVgQoRs4qMP1cJMTa6K6ffrDdIAtyv4QrL8mGPjaOevUfjz8oYv1VK7tD99+AVnspZ+Oj1H816rG+gDr22v8ZeeP0YTSwqAXOCVLZ6qCQitygPCgv+MqCLn0q7ys7aayj8iMsKzC176Xw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:kdgYvO5uXqtLk748J2dsJxbwNI9g66P3SCwEat3RcP2osPWpg8rd9m0byD/XXchbRRBnBEdDKlsDKfOlgdwuF6Cn+tp7Cfle0Jmqgc8lMBDYTPaFXYLcyMHzpFbXBaiEitGOXFMEiekZUP23GHZUIZg3/51PVYwWwdZALHlvPJZhKz4Ie0ZAENnHY3pvAOeUo4/ULlbwMWHp+qb4/dywm8yPnf588l7mDNx2o20qhQzOybP6BQoGTmIhFbeMqnst/FLvF2YfCOHMR7G44bPToA7OAyh7ZwYXV+aQQRovPvtKV1XAQzKg7IE51LbpUxRSTTNAH0FMuUHe1d6SLUX8fldiwPRUxJIWF5KWSe223nA=; 5:Oj0Y2n0nad+BjAGJHTeRicEKSRCqCMtVY0xD9tsIqy4Y0j30piI6Ush+k5u7GB700WK8bDjwvpvnUx9JBqexDdDwBwsIcUNKa74pvHeuZeaOaYYIRkOhrX3VuwaHHB2LS8dIWhTy9ey7SlcczdIiv/ApnrmK2MjtC6ZNXnkUZ24=; 24:2HtDZJt44OSwyKtSImfm+Q6iQHvcoO20LJp8h6W2Tx5mKOdHrxkHTMrGNrgmqFYgF0SlyjQECrY6fCsF8/fPtwIqF2W1xIC3o5yrA2N9iNg=; 7:U38iYgxoSW9lQDxwIoYsiBQFjz1NqtZdeMSO77g8rFKfwYyd5sfXM0bNTVfcx4n6kO2gdkmcCFN805XiBAbRUZk+pK2YoYvQa9OITWlzsNMqTdeIFHKbQJfqsLJ6a9ONjpopAS/H06MFMIogzNkBXHgnuD+v/VrM+5g/YPPeeAwITu1fT2iPV3A8k2XsRCzHZL1eiqaRpJsZFsAZknTjfOoOQI2zq+zjWV6f50Lp3KTQpJyZmf3B//mku0WEAHSW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:46.3957 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c5ff8a55-497a-4023-4056-08d555bbf423 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org It is valid to install routes with a nexthop device that does not have a carrier, so we need to make sure they're marked accordingly. As explained in the previous patch, host and anycast routes are never marked with the 'linkdown' flag. Note that reject routes are unaffected, as these use the loopback device which always has a carrier. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 2fd36c7dd143..314e3bf41f6f 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2746,6 +2746,9 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg, rt->rt6i_flags = cfg->fc_flags; install_route: + if (!(rt->rt6i_flags & (RTF_LOCAL | RTF_ANYCAST)) && + !netif_carrier_ok(dev)) + rt->rt6i_nh_flags |= RTNH_F_LINKDOWN; rt->dst.dev = dev; rt->rt6i_idev = idev; rt->rt6i_table = table; From patchwork Sun Jan 7 10:45:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856528 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="Z7eJ9kWZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw984C9lz9ryr for ; Sun, 7 Jan 2018 21:47:56 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753744AbeAGKrz (ORCPT ); Sun, 7 Jan 2018 05:47:55 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753177AbeAGKq6 (ORCPT ); Sun, 7 Jan 2018 05:46:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=nvJa4txuzrdNqKVOXQ6m15ggeC8VG2ZQ3THBNhhhlAY=; b=Z7eJ9kWZO2/U+W7GGGBqBPAedXBT28oQGuTHW6ll474M6cjcDC2lXZ6AHK521LpFNCZFNQzpEJkc5Ijyjmp5+KPvEvKVTKOm8jmSdhsaKTJzM34BuynYbkQYKcfBk+ai73PiT8RCfNN+VmpugqaEtkNt+PsPjtWXWRBLc1FC0BU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:49 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 07/18] ipv6: Check nexthop flags during route lookup instead of carrier Date: Sun, 7 Jan 2018 12:45:07 +0200 Message-Id: <20180107104518.31693-8-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6cb5bce2-6f57-49eb-45fa-08d555bbf5aa X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:QX6N95UNw/ZsD3gH0zrI0mhkbhmNSvpkjIc6twzesjLuZ1VXllUXLcrR8JJAOpJiQnwQvLYWPwNgX/6HIVq7wAopMzIiZkACm2TXqhzpUAYpA2vCUA66QAQ4sL23Y60FKHGEnfWRQhuBh6mc7jppzcfSpJlF5aBq7xjkmU3InUHzBFkpzihIKQbuIz8XpBZ+nXvnDKG7r4kpxIYha5HREzx/PcqPqyUUd8Ea1YoYJkkfzoIwqtX17xF2u580GDIo; 25:LntqFmbHq3iTDIT/qI0HsoTWospFhDbywi9TJp4WtRBNIqZlZeaZgleWAO2mKIv9cD8q6386ho2VhomWLPDEfx0X1zZ2lIv06b9G3PQnYFXGeln8Qy8750lXYaZNa8X8SAp6+bNwhPi9LBkDwMKbT+N3kjOmMU6HosagTsiKKuae+ozrI8yU0vgLL23EE+bM2FMdho7RLQAH6TYtuI2XOiZJ1ojqQL/3/vxJDC6CDwGcVYZcU3buxL4m02kf7+afXnRXECVkEaNMWZ8EfXopWtv/JCt6e5ZhlgThtLR+K5c9Q3oszTukqdcTh1TD6zQ7+mc8Qo950Y4Vr7OCaEjFEw==; 31:mQ+LHfLxG3gRU7rm6uXrc1BSmeG2l74G44tfBB0N8c2kl3a26W3krNmYWU0zlmASKPfQ+rP6V99Ldf+/q6wQqQiKNqQr1Yn7Wo5u3OPTwbNG9M9oniYcUbTGA0BO8uKpZP8RQf6CRy4sy0dUmAZBW9HE5lsAwqFKdKMqVfLLnyf10JMdX0ZQjHxiPn1ERAds5kmhftO28dw5TvshLyUBmrAkYQa4UqekTF6JqZhff8Y= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:0wrioDApyDX9UFE02zP8r4hcoRTVeLpgd2Jk5+1pSHMJv0vFCM3qT+VcvAvfEWhaax8+IjtLc7UKNWdn8gIhsEW7FOB+i3D6YvVBcmqPlwwwh/29YuPSUoQyODeIfK8UF8z1/XgRqqikFwSSBPpBEbthNLBoSxP47vk2t7Ub+H68srKVZwfvp0BRfFfUE5yrFEJjzxg4LBlxJ401HyLK8XW4iY/u8H/MbXNf3P2A4l/pCg9SkgJjPI/8YKONlAI7HyGpojp/q1icfXT3Uz3KwzMyM+UVFS2CsYVudOUQfAPmFbsJfkriTq+B233l6AaDR5P3Ut3svXT0DaIXjn8jhG+fVBEqV0usBxnZHthXL3KJKjgdpSCZ+V5idhCZKRImgRd5W6lMK3nyAVj44w/8ZyY2p1Z3FMsLOjW7Pm0Cku2z1o+xn2+Tu7fmzT/XCBxep404Iy3EI27JipDbu044XG1o1W3fTyM8wsoudO4S+itUcZ7OlHtz2yKqO3dqfyuM; 4:EgCPsJJTWe7//xCqZikk7S+Fr90zXBY9FEvFfdflgcUR2gNg4Zta3iszrNQOdTGxxTyFQAnnXeUEdHrxuyquKwycO7tXeHj/jbUGOlXv279IY8WV6JQsSobfovWJefvvp1NwUtkPVvzCDP+C0lPdRlQd8MIWKU/tJoGV40X4E+XEQPWoPa14fqiM+NCdowUMIGya1FVZuJgLoh4T8lrm6ZXtYC6wVAG6tpd8/IHg+A92gIsxzgm8P/6MjpxwXs0G2DvFq2uwWpcRZA+HGlZt+Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:ZljpIyDy3LDjb1YYDC5S7Y4L+6Bg8iAWi3S1vEagY+pki/aKd5QEBnlz9myImvlsnUGGfz7Wh0mrYc6eh9XwMdj7z1qVYbO669nAf1tlzC23cHWb5HV0Y7kbbgeOCr/RvC3kW8leCCTHxbxGvXx5NbsSu//etMn/1aES07CFI7pv50s3MnvVDNISNUczAzPJaJtZaPdYpRPjtaZoxaUEuNIRNzGC+J6TSky9vh2UU1GEKd9UYwM3A94c6J2mbPYYa6uWlDL82V0yBAsKqInuZLk7tTu7D6rKgtLBmF8YN4rAXNUbwXaC3qlEeNtCgfs9vlBo+5sxymPe/uK1FbPhX6XV4ge7mdYeO0/4WevKyRG5/ed2egJbMkZq4T27Ng2kk1YlBGNtpGRvMOG8W5NeFcYQuZdHrgQNNNYs00ktFRbKHg/wRJeHfa7m++mw4T0IasjuRJZjMBotKfOv92oRmTh/p08sgddClQ8IgOJYBjVFJumbeBosb0uTMV24dUXnGVP7UFZtg4tmTGo+wAAGaMewDcxGKz+LAKGjhXM2HokW+2Yslos+MYHQr9GkzKM7Ab9rO1xkdl+wsX20AG2THUepxv8FiFyF4lsdGmjDxs3KUgvgJ9tvSNvYMRIqI5ucAonsc8K/jcz4JCN4j46U+rX92Kosg+2bBDGzR2xHzKhBMUvTk/Nmj6/dDUyUBZC+2z4k6oJv3XUQVpbDlu7nZk+YkPOhWf+GXWdzJAOSnzXjWJmrwBGuNKXY+gx+HOlf1rUwOdmd9tOgezimxLEAKU9TG3LNuJVC+CAvBI2sxYgrqolM0YL4hnx/5Rlc27FLXj8Jxo9TpDsgzz7oOU8L4oemPzjP177Fb/Ef31SXV5DjYUVqTbYVi1jiNQOKr054abJv+Eiy+lTN6ZhqcDHT+QUOqcDen1BeecECUyXcwi9a5spxOHjQrQcoGrTx+aSnmb48hyyFfgXC3yx/qvlXDau9vwCq3hKBVkS/mllmemzmDbJEqYl0ar0hn4YuNzzctjfnlR6adTc3KeVLoln5bM7TmaZYKwSB00IdLXrqPM0f5Mdjtxj7k6whf219uCd1ZpkHkI6JL/g7nPxAmC43+Dy6RmfJeMBjdzBRMJs5hsJNROcBVDdbxPxSt56GjSB1HPj4P6Syo5TifAC0XGKHcMVq7iI8y1fJdyO4NgkKmFk= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:TNx9Troh6MksSsori/8gEamrzo55RGHYYg5R0EwulWv9E/WvxS1MIPTt/sUcIOQweEKpvuJD2p9xugHzWfFEALt6k+U3mpE/t4ZL6mj6HQkRIP92GCzfde4uok+QW1FA8Qaj2HIsfTYMWZKRQrDA9ueq08GUm7tcrlGhsHX4QEmFcUaR5HNic37DtGSxW37KUz8o+QYtao2/QMqBw0F06g7bouwUtkBF1k9uedT1u3a2jR4sffV6QOn1XhIyRFtC+mLlrfNTn8kS2eLasVa0dJea6gRMriswiDDvt2Sn7BIwm1Ciss7enhocRTRJZke+Rml+poQC05sb4K2Wr7nukJMhrl2bPwqkBgwg/jZcyJQ=; 5:tNa29EKzvltvktCTpWFCTqO0I+/i6clk/fYLWRuP6ax3vXGWQSmMCbMwDl62dbj/pOtwenA27oDVbjiF8XLvTnbAfiNzC34UuX3tzZD9Hfmq4Lb6hXIdbx16YgYAvY+rFGHFbTEvh5AcycnsYDd+xwe0jSuX4CvSiiyjHCaWGoU=; 24:/5VC+icalZ7vN65pJyHCbP3TSHtNjFIz7/2RRPhubRA+IQVmJkUd497iVNzovu119bSbqt+/nURL2qDdAQhLeBtUAZTfyuOVd7XE+luRcA0=; 7:AzM9uzw0F+Jaj/gwHPL1odwPC0ec5miEuL8b8JwIcGZ3kysTJVUQKpl1J802cNl+sBO9cvIlvPmjxL+ZH7VSk74uy3cFLgWtnt3XYUs4HVV/jDClaWPfQL8OIsHOzUGMWUHibvqXjMjGVWMnOg9oAlkNW9HGR6mWlwtR2R/V5nZxjbkuNV+zgYVgfISjVPpYfqZXqMxN2TyXgKA1NvZ844fND/32ucWRDQ1ufd8DaWMiNNz6kAI8nAkGggys1OeN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:49.0364 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb5bce2-6f57-49eb-45fa-08d555bbf5aa X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Now that the RTNH_F_LINKDOWN flag is set in nexthops, we can avoid the need to dereference the nexthop device and check its carrier and instead check for the presence of the flag. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 314e3bf41f6f..ab0eed43ed97 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -474,7 +474,7 @@ static struct rt6_info *rt6_multipath_select(struct rt6_info *match, if (route_choosen == 0) { struct inet6_dev *idev = sibling->rt6i_idev; - if (!netif_carrier_ok(sibling->dst.dev) && + if (sibling->rt6i_nh_flags & RTNH_F_LINKDOWN && idev->cnf.ignore_routes_with_linkdown) break; if (rt6_score_route(sibling, oif, strict) < 0) @@ -679,10 +679,9 @@ static struct rt6_info *find_match(struct rt6_info *rt, int oif, int strict, int m; bool match_do_rr = false; struct inet6_dev *idev = rt->rt6i_idev; - struct net_device *dev = rt->dst.dev; - if (dev && !netif_carrier_ok(dev) && - idev->cnf.ignore_routes_with_linkdown && + if (idev->cnf.ignore_routes_with_linkdown && + rt->rt6i_nh_flags & RTNH_F_LINKDOWN && !(strict & RT6_LOOKUP_F_IGNORE_LINKSTATE)) goto out; From patchwork Sun Jan 7 10:45:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856517 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="D7Yrm0bQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw894zS8z9ryr for ; Sun, 7 Jan 2018 21:47:05 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753158AbeAGKrD (ORCPT ); Sun, 7 Jan 2018 05:47:03 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753053AbeAGKrA (ORCPT ); Sun, 7 Jan 2018 05:47:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=O0a8DtlwDW8+kSUAH2pHpe0dIZBJ3uPJi86KcQzqpXY=; b=D7Yrm0bQ4PiECQx1ztQWarQ91+DvbrV2XD7EfogwSFe4Db/JErbmufDFwEFUhgi8hjE0JO9n+fCK4FbXLs/jN/1jzOjhZSrkyEpYbOccKDJQkbWwoQSARbMpDSH0O/BdUF+cxThSsL00BJazq07kmWdQMziay+eA+V73n/92Vq4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:51 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 08/18] ipv6: Check nexthop flags in route dump instead of carrier Date: Sun, 7 Jan 2018 12:45:08 +0200 Message-Id: <20180107104518.31693-9-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: e96cedb7-fdf3-4c88-d2e4-08d555bbf778 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:GB4hgES/HvoehTUnYp7M6hWNkyPj62o9XHELwXbAosoktvws8RkHN+cxn8XbmC4pGmF0A/7b6PtCFuClXzHKqKjGQ1MzF1Wp4TBv2JcI/HepYSvFDfcbDcGbXHlPQ0627CejSWwM8XBIQPhhcBxNfzM96YknbJY+gN6pHGRDyH3FZVUqiQyegyk0FuX5acXFmoZ5AbdFTB0TiI84OIsRndesspIjNQcq0eRo8h7GrIdyVsOal1ucbKBYHMmuyCIa; 25:64wKeoJUsVfFU6NDOewvem2xDYkZ6t8hqpw6AVEKyZdLkYii9dsjW0ELUETGuDUXXJ5RkeTlwe8e4XPuoSnfleEsUw71nuSj3m2Qv2ycXmyd0XXgXsjVkR/u3G4AtXf9zUCwFfWHZSEUydUOViUgs5X2ieeyD4YWObftgWIqDgC0ZMvf7HdYCdPRqw5AY9C/56hiIuQlvu9y0OC5X9S4L+IAv3urANhJKHuGrABGL4YybTQuwb4857TI7T8mX7KT09Bsh1LGGjge+TkvcLovFPqGv7r3W1qD6tciJC8z9kS2zJNYARNASf1zQUV6Mtl2PbFLcFy8gcnM9/bF2Z1zmg==; 31:hyply2N+BiEwwDbB6o5H06qH/6M04isKW1smTpTRzwsjV61KE4ATUOtfp5H5TgVK85rQ2OyqHVwjUtWHNhvLW53gXqB2lfhtreZW0uLp8N0vL6TuZR2202D5wHzf9eizdf/+gx1EEP36Px+8M7cd6ttxKEyeYGQ3t9YbkrtpDvzGdELmMAguoy3KDDoqQjkLeYBqDkIK8Yn952USs7wUUPfl/HCzbvUKdsrWHTdAzf4= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:j9dl5aKIcO+151Vqg5AHzCoSIi2aCSW+YVy47DB5fdbtMask3smtGaAzudj4D5gKHysM+BjdOxRqqpsE9AxkNggzIb0hC8fml2/iFvvQL59EE/zSmX4xeoKhsK4FoBWs2UZUo3xKtJdk2Rpwb4IR9Kvk6lkcO+2laB1/hZwPnyWTQ8XMxHntjmwzm0zqxROycKU6XIpu4sg+x6XDcEtoaU+9Nau5D1OamEiXi6AVSE5aULLlGp/+Lb2wZNdyJKMOcR6uiDj7wK12AIrL5eWZgls0Qjtdbu+rqd3Op6AKGkx8Dpzo5vyqXASzLm03tCXflgTEWvwpc0HOUmB4bUFBs9DsXJJWbzDcSo5nrRYPuZvWrkOP7ED/q410XPf0XBbFwZcw8c1L6WePkNW/d7Z59svBXxoI8QStvGo7i6kDJ68bZx/SO6HaOkx7ti3xiPWsjVGstGOVJVsdHDGJHx/hp8sIe4YMQ1I3htZyEivRqhbzyPVBEI1BmOgJtm8LTRPz; 4:lzqgeplfYOhm8gO0oN9IRGGplYnloe6RFKP7BIkKNsfTwzAijNIgtpBouH4Ac/fR3NdAe1mOvFo2vo2O1hnmejdcRw7pwPmv/vLThjjpvdoNcU520LV+KH2glyMdYxpl/lpFRq8JtSjIhC4dn9fMyJngUr/adMBIl/3D/voth2Hi6RpptmWn8lDDgpA2p5Mk2KOn6s3zY/kYO4RzcMkD7BCbfKMFnG6qBmOZMmGip+iPDOiXi9EZeFabVyPnGHhoicYFotAxwUMKpNxdpr9Cag== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:cNn8uqvqi/VSICel4T/+fwo4LeIbUagUqL1e6Vjsw7qpHum1alRb/7iENPdvPTlUXfDVTfPOvmUXNmxgzGUnMJ5JQRfnX0Prt0LDerV7glBiZJ4sHK5wR1K7IWSifNPu1yUgVTvQ3LdZtVbqKVIHrLBp2aww7tL3bQblfHA1MhKPyUAndIm2cdJGzMB54FteaRSS92NuX/NRswBg61BL6S3dyDuas6E6x7BXcnSIfkNbg9FgRT7dPzNgfEv74mBA7U/CAocMn8wRt0uy58QtbUgWoQdU8wMtFDDqwgHPVZmFdCAIpC2XK6r6MVogZW3onxDm/xYSFAxbqfOYXKpKHBpEiwHOhMLSM8r6yFuYan8zdA+u6gzs1GMZBLZiPc5RkF3fD1aZZkTvXDkX88lBwXw5xlyjKmJJm9x75jazW8gjGZL58sQgrcN+ZaU/cZmTIHimmg/wSM0ZpM6omZ6Kr1cMKHWSVTpn8mPXcnbYBejaTWLXm58E/my1L4VsYJ4VtXSUWDi+tw4Meg04Nvjuy/OIWIHJ2inVFOcPJZiyye4BF+o3hWa/bYp9uCVRWR5eN1CHidIRgJS7hDiq0sxaHCIki3eNHFbMGM/OxCT6T2iw+Az9dyZ/0v5NG793KIFCBsBUsQpZKm9vJ3PtkYSNXP7vKYVNQfOgeD7rpjpLpwR5jQbhMAbbjPhFRuS/SMyVkwgbPW4FewNJzVTO/WNDlydS+iXG01uhFKhwKv8XNjGfT4+X/EyW0rVb9wOBG3k7qFkENxVJlLpR+uWVq/eNx8UbGnwBglJ5z34LfP8vVlbGKQV7kdE416LgMPFuZLpfUZyQFzQ7LeuCkzuqJ0+qM4SUANmvpzLB+NlLZo8tb0MXM+uZjvVvif/RdbpP0vkz64fpYTFhXHoPKzJ7DLerp5MZS44g5JPxRb23FeXM3KqGj1aZXBf16TrPGicAkd0LmiSyLifMJw6d0BtNOgHcCppxFAAZcmAOlnbPTOTzFEm39SPL6CfCz+FAr0oNGoansJ6RyBxBB694TVU41BosrLN8H8zu/e37vI0HPvyom5dsHPULXMwmlgpYmNmsIQ720ezzHNEjXqROJ1bmWZ0LutNSZ8rPb23C5dLXtCa04fUv064UI/XVOUz45y23wr3oMEvq53gwE4Og6/MI+gDkEuoyP/U5okMsl1Ij47GOnBFy1zYTHqj+4VlVnPf5NZ+iApWwlEg3sQmhtwrZdycsUQ== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:MsLEdh6nagtI7pMrP2ymoJ3ZScgG6PkBzf0CHlspCGgHXkVJ1L2k1HemYyk9iMz89cY2TDi627Amk3zMNY9HZHrYctiPqqjCwVWhmJg8InVyV/t/8QR8YaKwQvka/s/tVD4K5Bkpx/2H5TLpP296x8RfrLkj5WAHmut7x2cl1D4cv5VPEkQTlqyJVVR+3BTPaGWwwFO3w4LktvGNa2LpuyD9mQAZ1+XMG3emTNVXZl5Snw5G2QFpcfjyXfziX9o9IT8I6gfnT2pQHDSsjDwVdtGnM8ZmIVx6f/c7k2ysJz2g+35pxrGkkezuik63S0N3ThyVGeVIBVS2ppW3vX3gdbqi0KEGmbf+qvXYS+sf9rU=; 5:/ACOBl5cH3JeJBiSZmFU/HGrTHE4KcnLS7I9PZv14rYvfdVXuUGaWJVoSnUdPKBCR06J6vOkiCI0mnSdl4cV+bakl6tKssoYj4t/JNT3xO/oZsFdwUsPYpzDKXuTXhQg67zL5WXGvGpNFtQvTfpj5U49s3cb9v/tdDKS5ML+sEU=; 24:KAPUld+8l623BbL8RRzkddecUw7+DE1Lduxt9JEQMhSoH2GIzwC5qY6m/RT1o2Xn0Cpp0DH188HmDbVI82B19nqtM22gvLAyFnmBquQKY88=; 7:vwF129tYQIsdR29AcEkti/k90nHN9ncyh+mZE3rleB7xxvAh5HK/1t4+AEUNDVQb51XIM0KIrB0MK177Iz6bmk+e0mTE4wZ4ObmYCuJFXarSQPMOkEZEWAVKGyE+eXzwBAAr0Tlcp1hYgsByjvSY4W1ppB1N1CcZZOXKtAklTTQJ7acFBPF5EHnJ8YG7VIAlKBz/tCXowWKF2hBVdvG6c+Av2XHaVeiKaQya7zOMBEGl3h5WX/srtnd7dbVujDk/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:51.6303 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e96cedb7-fdf3-4c88-d2e4-08d555bbf778 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Similar to previous patch, there is no need to check for the carrier of the nexthop device when dumping the route and we can instead check for the presence of the RTNH_F_LINKDOWN flag. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index ab0eed43ed97..f980f904d6ea 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -4039,7 +4039,7 @@ static size_t rt6_nlmsg_size(struct rt6_info *rt) static int rt6_nexthop_info(struct sk_buff *skb, struct rt6_info *rt, unsigned int *flags, bool skip_oif) { - if (!netif_running(rt->dst.dev) || !netif_carrier_ok(rt->dst.dev)) { + if (rt->rt6i_nh_flags & RTNH_F_LINKDOWN) { *flags |= RTNH_F_LINKDOWN; if (rt->rt6i_idev->cnf.ignore_routes_with_linkdown) *flags |= RTNH_F_DEAD; From patchwork Sun Jan 7 10:45:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856520 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="a55tTl+E"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8S5l1Sz9ryv for ; Sun, 7 Jan 2018 21:47:20 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753548AbeAGKrR (ORCPT ); Sun, 7 Jan 2018 05:47:17 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752942AbeAGKrC (ORCPT ); Sun, 7 Jan 2018 05:47:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YfFAK0EY/PcJrO19FRzcrXWYo7KeeF8IjkKD0MXhcHg=; b=a55tTl+E8kxWJrUxDgAjhLkIlqM0ImGhT6TTRF8k6xSQflXCkIKUOx5mPAJzF3YrPGYXUMH0gis/s9rI1/YDHp75tG4YDrdR9KW6P/NYRbKxBS1v+CaTmX9Z3vhRnlpsX7HvrYIA5EYJgo4jV/sPv89u4ttDMnbjiZuAy4XHAko= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:54 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 09/18] ipv6: Ignore dead routes during lookup Date: Sun, 7 Jan 2018 12:45:09 +0200 Message-Id: <20180107104518.31693-10-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 994fb9ee-a5da-4d23-61f1-08d555bbf909 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:DUS0Y5xtNjMqoBUKeOrU36aWebYBxzZysGGWHUvQ/THV+48GxOJAGs4HPkofrALlJhnOlRdOWEFr8K/Xn08IkQUPmOZNFlTRKC5irXO6FOhJy6mGjkyij5ZR4mDadwf4J7cK6nFXRNCAWrzYJAAhs7oASVRqepymRUVQkadKeouojH7XwSNqFjMlqLu33PAdb+JNVsR5D/z4HilwtwrW60d29o7gTfvf4PsnFYQ3Gg2uEhXiUvtJPb/34vqiLmSv; 25:y8oqyhRR51+jeFWTFhoV66sIEEZj4GqNBL21eq3FX2/Uhq2IgbpuhZ7q7cfuDAUHmucgzUbO8ce0Gs7KitIVAHrATIVw2E1u67Z6HQpYXR9RQ27//EYvP8FFNEohglT/QGiXRy673mEZIJnBFMK75twoZhPK9GF4ymyOjUO+QXRXgH+79edztfQrc3I0PCLRQGBdKNMaNv6+/0jk07pNXa6kiHCVwRmIrOahAw51W5FzxH6QUHHZ05D0BG68IinDpYvQoSwyEETMwphgXMpsFFhxHa8kpcXGRlSa3QDS/CkJ36jILemSijMht2o4qfM3j3ZM+AkZlEtDFNIerzudxw==; 31:+LXBH3AqjpRkx6L1/ZWH+2+vg1D+zv+8az5az6fdRiPcauo5PJE7EsUp7iFcW+cxembCRdViONomIl4TT2R8b4MaeXlAsXiGCWvhMdLI8PjBEsLT1jEl0/uLTJSlMN7RiBbA/+BChhSdqA1UltBS3oogo965uzo5mE52/W80i6to5IqSQsZhHQKvmYC/V5K3ANdPMCWSErBdG0hXJdntA+r1sPZHiikqPR234DyF8GE= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:EDHrcnDFZhqWj01IM2Xi9jxrhxeG/8RVc+qtfgbZGkb4Kliei4XiOnJSJ00tJkOgHvnaQVsyljrEAQxCw4Nq8ZPLpkS8SjxH4rD4VAjnUy56jf5398jkIKFRuvVgoFueBAvJ4RqMK9yLBDi1H2U2dFBOSjo2AHVcP17ZkImaJJ0mPfs22SxrqLOXo6m5g2QYkk4C7BMdPIvdTCT+iIIeOTJOu/sAiyHsmW+idjwv+P9NqjJ0Gz3wOYg2LnhE+VJQr7ysQMZU5cldo/RzTwD3Tgx/Qd6b8I94phkq11JHjkshn9ojmWraV8jdv5YRm9xSVydYNWptzAYRrO8o9JNlgzQgOxhB05Ngda/nJjpjlACJb/dMKdPtout3uWVp7yQRVlwbTalmcnjYpFoFXKPReEH6HtxrAyVuv9xdHGkUM4fOYiNcYznSmj2KJ73mT0ELsyIdWWTW+KhSovXSPzJ1Qf+rIJHJza/Tnqep7L/oc+1kKjQwYVB3HpWWr5LgB1Uj; 4:x0Jh++2W/NbWyhCRiU3YD1vFPul5neu8oRgcSaQrTs63oDvklVCeNs8X1boVLEYi4p0FBiNPX02EkU8EqSJcTp+KbQ3GPGAiwq9pSIaYjEbcZyfBMy3FUGoBGtt4v4xjDYmwYPJqQJ+Lu4x3L3QhoAHZefs/yD+fSQFA0dx7dZEJyW1gQvmQfvY+JktK8YXZ7dsT8WRMkWJPNJhltZfKBvyvrAfMbjU0o+jh7+ZtUHRjpBLLkYdt6Pm+JRAIvdCNM7RQadiz8QVImf6hUETR4g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:wHYUXVo5ZSC/+iOjew1mVIRDk0MeuemrNR0cjfZNOVjkUViTL56LsvyQvlwLVsjRQFD/jaMjeHqfrYsS1Yzu6GIzsaRvMivtKiMlz21s6jZb7uDP4A7H9wtGYrD9ZBFKVdHKtlPcQ67ZUqebzLusWRZ7S+lbnEyOnzCgrD5VA3ZwwRnxlRUj69rn7wb9sljEdgOnwbfWrPXveCbXFWDuyEV2dtkHDK2p/BXWmdwnp4w/DgJsvTy1UgZMk0ZYmR75Li3L3eoQDaENUaA7/pKl6v6bhJ6UxLhMGO6juZW8LI+HsqFTsFfKU+/fIBUqNeltL+wUFHKk+OBG1MaYwKKqv22W6YcZBhlhjxyacP8f1OZaGpt1He4uOxucoe5J5SlJol+w5vZAAxRekvnWwp2VN7JK/u6J6chWRivF+AA1nwarC8U6itr/fbg3IxmHGjR3NybEphcrE4lmY6gjw7O8r2y2gwsen5ImUP95lkvzpQvitHuKz0nR2GmVj2Bm8mt/mEcobp4lIB8V1pek/qHudEdjYQVkeKsKEBWPesS04Zg/gUNRsPQ6jiglqewYDesu5moYvy++QYF+mjhter0YX/WZbLBPMVQNa465Rt534T6bx+7g/wqnV6HS5KQ+ciHFwhV7kUmxCf9zBglRC7s0r64xhvOes28OWtUDnAptjMHSl02I+gDoD/LyyDTKP7qfpxGM50pL6QqyvQVZHzwG18OnnGus/js13OzqnQYKO6CWpY3W+2zhYVQs7P+wWbbVp370w75hGYud+ndzVi0jKHrKuywaR5TyNl53W1DNfSxvLrCNUie5h9EnU0Sw3ppnAeap35kHcAN8SOhxH1ZR4deVoXaScTvdue1B9dd4m3VpUzZXDs3WLy2cDSkNfwcvSn6eCTSuLCdkwBWJpo02SBYbEJur/5fAFdVio1tMGqKSc2QUfEuj/cg0++iQ7RACjKrfqn0yAIAAAm8uTTHMqgdQ4UzWTa1Ku2k1AXijXcJxpJt2v1hr+Sg485zuAfaMVa6WxQ8P7VJTwOpGXxqFQ+GYeZts+47kIm7k42QKwRZ1+QnWzhWSaNm02kIZ3xEX1VoQwVaapV8VS92sA3wiZOvrADKxAlDdumzUIS7rP9qdrVwK/Xn2FOp9Hky2pxohlldBMD96mIyV67Ja59Tp0MzAN+MSeEcOiOMCPlLcaRk0Y/JkpK9YrMrB0jETsnhd X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:FyqmgEIv6qNb6SqvdsNWCSV9j4hsOf7MKQ4T+0vTCnV1jcMVLapTkXMzQT/YGh4ln3TMijqT2YzcKLA6nOUtL6u5ZXP+DhzbaQpa5RHMlrw7/quVg+NGNTs+6wuzI3Ismauo3S33lzWRyRCMDa2DkfomHWdapwV7aKVu6IXe1tzQwgenJNJiT+dDbDzGqfFAT+/Y/1L4L2wtFp9yV7jyqCMuRqS7spaVH2dw7L4x5t0mH/lCpUjQA8kfLzgZ+395a4I+FGyYAUndLSQZSyHSJOC35xR9bHx0KpDTRe/Hl24lUUDho6H326ohYrz+6vMJZYckZJilp2hB+Gxzo/9Fj/X0Y2+/M2uB5QvEk8l1AG4=; 5:bAk/uT/LzxjHB1MxO0KHl8ddvxs1whcgRvTRdofR2VdzGsa7Fh+vFXJ4RBTxnCSObRydcnpPQdpSw2+sG17S6fw1hjOa/TV/Zd+NngfqK/mHT4kcQvo0aPulBGsn7WcxM7lbU6cKV+RwKEGPl+7APfJdVYEKGi3ZTINFiqPwqBw=; 24:2J24cXj6gwq8IBNggc2zIPyUMUzLSAnOdCZRXSrEqsPIoMqPvs5use3jK5QJ05EMqi3kq/XI6jh7IGtAZAJdDvE/URA9dIeWFujxdkrEtuY=; 7:UZfVlFafx+2yTwS8y9ncBj6DlM+5oBcSxRhd+yTbY7yhdC6iuhUeJWiGhJii1eLyGvlRp32nnCQ01HRCRfShJ8L6qmQx/4PJ8RJAGs5t4buA4oABbBgvbGslNrcILzzk7YhoDNjjsakuxJoohV7ZAcIZ4UHbMYMhQTw/YV6jTh6acVzRwwFqxGjfRUBj1+J9sMfawR9Y/in6Dv0iO922k7xvhm1GRivLhGXGljRslaw73OUZQX+z4SWwUjmPQhTT SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:54.5991 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 994fb9ee-a5da-4d23-61f1-08d555bbf909 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently, dead routes are only present in the routing tables in case the 'ignore_routes_with_linkdown' sysctl is set. Otherwise, they are flushed. Subsequent patches are going to remove the reliance on this sysctl and make IPv6 more consistent with IPv4. Before this is done, we need to make sure dead routes are skipped during route lookup, so as to not cause packet loss. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index f980f904d6ea..c00156805bf0 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -474,6 +474,8 @@ static struct rt6_info *rt6_multipath_select(struct rt6_info *match, if (route_choosen == 0) { struct inet6_dev *idev = sibling->rt6i_idev; + if (sibling->rt6i_nh_flags & RTNH_F_DEAD) + break; if (sibling->rt6i_nh_flags & RTNH_F_LINKDOWN && idev->cnf.ignore_routes_with_linkdown) break; @@ -499,12 +501,15 @@ static inline struct rt6_info *rt6_device_match(struct net *net, struct rt6_info *local = NULL; struct rt6_info *sprt; - if (!oif && ipv6_addr_any(saddr)) - goto out; + if (!oif && ipv6_addr_any(saddr) && !(rt->rt6i_nh_flags & RTNH_F_DEAD)) + return rt; for (sprt = rt; sprt; sprt = rcu_dereference(sprt->rt6_next)) { struct net_device *dev = sprt->dst.dev; + if (sprt->rt6i_nh_flags & RTNH_F_DEAD) + continue; + if (oif) { if (dev->ifindex == oif) return sprt; @@ -533,8 +538,8 @@ static inline struct rt6_info *rt6_device_match(struct net *net, if (flags & RT6_LOOKUP_F_IFACE) return net->ipv6.ip6_null_entry; } -out: - return rt; + + return rt->rt6i_nh_flags & RTNH_F_DEAD ? net->ipv6.ip6_null_entry : rt; } #ifdef CONFIG_IPV6_ROUTER_PREF @@ -680,6 +685,9 @@ static struct rt6_info *find_match(struct rt6_info *rt, int oif, int strict, bool match_do_rr = false; struct inet6_dev *idev = rt->rt6i_idev; + if (rt->rt6i_nh_flags & RTNH_F_DEAD) + goto out; + if (idev->cnf.ignore_routes_with_linkdown && rt->rt6i_nh_flags & RTNH_F_LINKDOWN && !(strict & RT6_LOOKUP_F_IGNORE_LINKSTATE)) @@ -2153,6 +2161,8 @@ static struct rt6_info *__ip6_route_redirect(struct net *net, fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); restart: for_each_fib6_node_rt_rcu(fn) { + if (rt->rt6i_nh_flags & RTNH_F_DEAD) + continue; if (rt6_check_expired(rt)) continue; if (rt->dst.error) From patchwork Sun Jan 7 10:45:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856518 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="r/mSXt0L"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8D4SXPz9ryr for ; Sun, 7 Jan 2018 21:47:08 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753414AbeAGKrH (ORCPT ); Sun, 7 Jan 2018 05:47:07 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753041AbeAGKrE (ORCPT ); Sun, 7 Jan 2018 05:47:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=FiEk0K/J/8HJ4Qokn5gFO1VQN2/TLZE6MggXPv3wc6Y=; b=r/mSXt0LMaSp1GZ+HRVd1oOK5FozkvNB46KbYVShcTeCVj3e24EUYsDwqYswqUSIuE/hQhM4BIY90cLuY4cSn874uM60CAOesYBfZV+WQ5z1Z11gtbllEFaVShg+671rWpzO0UzVtvi5WOr4hiczMnRV7mFQhMeaq1b9hw0uRkM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:57 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 10/18] ipv6: Report dead flag during route dump Date: Sun, 7 Jan 2018 12:45:10 +0200 Message-Id: <20180107104518.31693-11-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3926d468-2042-467c-a1af-08d555bbfaaa X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:mGwT0N/fD8z0AHhs4eqB4TiLEDNftxEYH5U4XAZl1XzJchGXGS19Tn5++x6/LpLn+PZJBNHiVBaT70IFTx+6HYbWErLfmWHz0aztYjkIxUC0wvZ0zIIK9iM4X/E/xHFnEbuUcK1TUJ0jR1jhaSZzph1Dm/gKSGSHUlhSHzRD76krESbdXPVr5ofcrC7WXRmcikSPzofuY3XS7G2fadL9PfOnjQ21nAfqGYCi4h2t30M10mTkKjnclZdbZkErnaGq; 25:A3/JGkug2hxYGMYrIxKNtC6l0Och4uuUMYl8rSSumDcwaYAPOwm382GvNkNq3QCYj6yDJ0iHEG72ZOHGxRKFeixY+c4I1l/aW5PxHWvwCI6v8GrMLEeTDbzCCID5xEOHu8R7HwYZabxwS85Fsaknjph+BySgqL/YywfJQNGGN5lbWYFJ4uKYT4mOPE5URJrnZIIEheJYcU5MPStAujnnmRgGlHiDRu4xq1lIvkwKXBqwsKoRY2XfA22b4fIEBWif6RTQLi5+F0DKkX9oe+hlTcB+UuBo6boLN/5Zh8FJjAWyxTiqQ11QZCXq9zTxYzZvKo0hZwa6EM6gMAXCfnMlcQ==; 31:dMffNLRVWHj0L1Sk1Jzv4FjDXY60b4xkRHAht0PQwHM+lxriOtUlci8zm5+r5zpczrx85+zU4Phm9lELng2UGe0pYSzjTCuKQs/On0AT3dFV5MYoaB3jt275igEI5x1tl7zLKoFjIIBrGFk4PupL+a87mkgDfwGH+e0AN3vZG9dW2Ab0LJcevjMe1GOHxEaUhLXAESwMKyzbaRKFI7eo7dlaGynFh2KGQUvokfYXwRI= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:oo904wJEQs4J/rftV4Mq+Cl3EhlW6QKohqsQcN+LbglmKi/ELiccxqIkMY2DQHDfGosSEn1QpRY83rWds8LV+RvBMdEheTueB17um11c3sm0oiHq8x0XJEk31/Uhi6RDf1taqvY8AMwCXI9afYhKzFWAVK8ZoNJi1uJ06YCpFzusYCHm+UBw2Ta8jwaPoAOfkzaJXx91U6znhxWHUdobKBGvmLtDV10A6cFLycBWXgT3vOf35wGy50DowM7MmBwhhBPSMCmyGIiQzDhafsLnYZLe69NZTTxWDdK7Je7FNNFeEvgyGzoFVaHtgw61ZNRgHiJsy+9Zb19UGloF8IbqezAz8V3zGjomkLV3kEadOgNCF5YlyY9FqyUB0hGt22zSYRkiueA1qKYBY1cxoL+sqvh4uAYbq7axebwUGvIM/yRgKAKsqU4ckKkhhK42cIgf98SSUwOvhEVnNug21/jYZhUInN1nFDDsrjDHuvJSYExOHa5tsZ1cKLvVBylY5BgO; 4:mennbrLspdEmOg+oWEpDu4hmC4ptvt4/cqUOwBwt+ShnN4Rm14d1nT02lfuKrH3V0r1txJaWbMRV+OaRX5HLPgRzUg9YfaUNdhZfAHhsW/pQwkGvHIN2OS4oGRJib0r4vLjixtsacYgYmtQbUiUTHAG6NeIJvBnowboSsO04Jb91D48JDSyguQ2BoUxumQyIZwAY5nPPAtBi1HBsk0NIj4KvSYik+i2cHvElkhv2xxukI3OOuyKhHdb5ASL7TSjeeKY7JIFNtAFfLacF+UVIbg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:SNJuw+aIymkxNKV23LMKwXtt5Sc5UtXpdwpWwyX91LYTBWRip7vZ/o3TIU6S924Waxfq/s8Ni7H9hs5sI8ctnwOXnrr1VtT+P86tZqDd25Af2ezbCJ7oirEcKx8wQ5eOeZw08vOX/y7ZjshjNvN7tA6qiJXWpTq1Y70RCN6a1vkq/xNF/ACWEO3S8S4RJ9GmZKCgEShskJy5oF46XgxRN7SLE4W+ikAID+Zs2JScQiypvvIPAvgPYv1s2sFA271zd4JYuUQ+fRt63jJiR51LyWWVphZmyy3KVU1e+SdrYumOmhHWNkE3BGS2iyp2riqLdj2SjgLpjJWf56gzRN1NzV0eC7C9Fs/WcqVjwd92DIz1UKa2zfJipxK2RV1GWhMVnIyT+HsHNyZ+yDfQUydf8M1ZLvoCMx4lkuCKdyyKywYkPzMgcMC/xYdZqyY5qDKJ6MyroXv3D6oqs1k+F50Uv+cYhQj82Q1/DPP64dhkdU05Pd6dZEJNHvlwgX0jYArcVtl2VTX/uHKqSlQoM+zRj4Yo3v58p7Q+dXAzPe3R9ti2vp/KvBdrtLrPuPnPNsKhfWRSUp8WIKFqruVlDYotI3HZUAhFPZkWe3HdOjKRuLaNCwU0vEot2CzDnWNuN35zqM1mL8WsZH5IcTuD041/XAeDFOvPAmB3GO2WA74HaRXF5KCYM+iNyQvC3J2H622l+mc8/L/FBmajKMhIavGt9rTk/tVT3WZH4FmNKyspVYlvL+yxKijiwhDKxvGb3pLkS36OtLtB/0my4QtM6kUiQgb8H/l9/F0Hyi0MkUlVw5gxceL5lRMPKPD+lNRx+xoIvQRUI/EIaf/eEbS5NCyzRUPf/BELoFuzPKqV0HMwQQfy4xkg/txNj48Vi/jtHleDtXBWUXqf+iU6Sbz2MP0JCCHJv99w5Aey3pK8zjvck+/etr18nXhjS0IPMLdh+9/dlUk58XCr3UbF4Eis6ygZ5ol8FuAZKnGz5iPK7+LK4xtxhylFL7rKGDMIRQmt8pZbiRDaa1KWalHLXSo+8IsAyb69IU1Z6yGsZCgWxEXGnz3RX2hDJPduyJM+bkM3SjcObIOGvH9CjOTIalfwbdj2hWhTZN9QbUggBnrFa0GPkSjsLrnEjClbN9XuygwM5Nq6zPfzz+JcFtkye2CkV2RqRQ== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:EcTurzxzXAwkDvJuKern1BXIL89epyFdZVxL/5GF4dtB/a4s8qgLriasGXpa/mH8ZyNFcUb8jKgRYYb4tYpUIsRy7ynirg7voMV4YPH89D7Wa1R4gRLHvcSLpOXHlAlhN0fPv6TOx1TrUKLkVS9rhmY3dCUUMzr2QlBf4mrfeUQT/w5v1Hh5knhsdWslJm0x71QY5ERK9PVE5d5/4qAHU+QhDPThmSTUHdmlwWhf9gddsi0q6Hd/C8azFkeJNwDlx9rlcpagx/TtTgeg7yl6Ao4FY7Xed3tXv7YTxrElG8D6O8T8vM38H64J0FNbVZEhAajJsOUFidNyuOCj5ta/irrvCyHWKp4cr3qJrZKQhWE=; 5:72XqUMk4xdmBOpkY5rzp/n/YaARMAuMcJg0Hc0HAZeQge9sttOpYWzJxo5wNBFp690iLTkMuswpJnEnrPr/Jazm9RU2AYIFQGa+AjC+3FAHHK19Adr/jy1TGKTBvB/3bJFP+6nuZfYO1gMnT5CP1TfC+Tk7+tfI2D6eii3fl2vs=; 24:Fowy9sF57F0DeYrWQLpGwYaVUpmD80duRK/xzyQ2eJwXwWdgCNzuvjqyl+Wy52b4YSLHriLrRq8SMMNEpDXmB0OkUCg7vsn70na0dsQTK/E=; 7:9t1BvXAVToO+8iDBBu1TtgL7dHwOELDCQSiPIA/C3lUkowQCpKRGIDOTfJxjUY9XO4Vk5Gp+A6r7/1B36JV6roQlvKxLVCKZ09N0yF4DzKDSe/5oQCEDaLwXX8/uHukK8MpQhrYDFP2+v/tpjbDl/dWwhL2qRzhJ4JcGuLCP6B/H+4/ciuqMlPOhMPCFuCHQ7unZiYKDYwaP8VgkhF70EICa/HYuVZ3t5wdOT60mR6DsoVCCkBwUBjzzB7/QU33J SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:57.2242 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3926d468-2042-467c-a1af-08d555bbfaaa X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Up until now the RTNH_F_DEAD flag was only reported in route dump when the 'ignore_routes_with_linkdown' sysctl was set. This is expected as dead routes were flushed otherwise. The reliance on this sysctl is going to be removed, so we need to report the flag regardless of the sysctl's value. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index c00156805bf0..f62d24948aa2 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -4049,6 +4049,9 @@ static size_t rt6_nlmsg_size(struct rt6_info *rt) static int rt6_nexthop_info(struct sk_buff *skb, struct rt6_info *rt, unsigned int *flags, bool skip_oif) { + if (rt->rt6i_nh_flags & RTNH_F_DEAD) + *flags |= RTNH_F_DEAD; + if (rt->rt6i_nh_flags & RTNH_F_LINKDOWN) { *flags |= RTNH_F_LINKDOWN; if (rt->rt6i_idev->cnf.ignore_routes_with_linkdown) From patchwork Sun Jan 7 10:45:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856519 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="PMLJm3A5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8R139Lz9ryr for ; Sun, 7 Jan 2018 21:47:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753497AbeAGKrQ (ORCPT ); Sun, 7 Jan 2018 05:47:16 -0500 Received: from mail-eopbgr00048.outbound.protection.outlook.com ([40.107.0.48]:42941 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753061AbeAGKrG (ORCPT ); Sun, 7 Jan 2018 05:47:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=XgoYO3Re+9M+r7lINd6RPzDSP7CT8Ca8+JA/wXN2MrY=; b=PMLJm3A5VqpNPjKPNwu3q0SRhIveLc/ue+eMRS1Z+6wMDrH46GgoXK71fR40Umc30s/tqwJw6zqstRce9q4fCddMjFb1nV8doO1w24MZxzt5IoGGteOHyvOkGE+iAnb5S+ZOPUi+haaIlC5WW57VhS8AaSY936qDwzX+1yCV+U0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:46:59 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 11/18] ipv6: Add explicit flush indication to routes Date: Sun, 7 Jan 2018 12:45:11 +0200 Message-Id: <20180107104518.31693-12-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1726bb5b-f265-48c3-57ed-08d555bbfc42 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:0MLRQ0R9ZieurVPJqUC+4pSViBrqb0JvaZeoCoOIZE2BumFaUvgLQLoT3u9iY8t4dYSwd8uaMHm3ZpZBernshZnVNJSBlL+huB6R93qHI5OeA+WDeY21YssW/BBZOT/CLBxuDciPu07Xuj0X6t1AYlHhuBPJkTnJO82llucc39/BhJW4ZtdD/P4a4X8GZSTq3Yqqmtd24HeXg5Cx4n5ptrsh9qlnwGUKS1YvPnE8hqgn1soothzNO8rj+YfB7uLC; 25:WfSpfo9SnKdRTcTsm/MKlOAk11WYL2JFf9eqiaXO8Yw2ikizxpVZ0G6OshgMvBDyM05svQ+NLzE/NTLrrk9sHLVAzHY6UdWjXQuli4jm8jH9BU87vzMahQqJ19AzOqe+Q6UvBaAU0/1k5UPjXhkbtgAArmqZwCvp6/wI0M4BpWyJiqIB+PADE98mPLYySXQ24CHfyOelohW7DygzwuYLeZhTVut5Ed/WxVN/3SvADsMtQjQLEQwa2Lv+2i84my3RggJAhmEbKzQP8AHTRfU+1yLgzQmIsKwf27KBUn3n1n7rBzOOP8S9viBjC8Ing467PRypOdca0plbXaEJIE90kg==; 31:tZ5Eb66VSw6ywaXXgFrC44R7BOcuaEbZQswVQmmFhqZ1Y3uNhXy5l6UOR42Fq26dcnpblwWzTZSZy6HcbgQ2dezr8IT1DuYf4dPZi+0IS09F90bPt9upODH5VV8Au0PUQKZv895LFyXdwT6JKMq5RYz9+A4NHN8erl6FzgdKnzRc6rUtNpqgXQW2ZZIxR602tfdXk+I2meHCWikK6z5X6UZo4fiF2JL9SOVmkGK53aE= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:7DpX88lNVX3xeO9NN4g8tCDpmaUs99lnrEYWG/pj8VrzLy3JKXnrSlqeZnGN3fUPSM5vFFZzifclupbfKBRYIb2BpuuMcD575SHv6QSfH01hrdHEGGjRcJZJUJ0Zg70q716HRkH+3ibRHerYuZyVOz8vmVrwQV5DCaRIqqoVh+cmCi2eAXLPx0Il589FCLdSh2bS011xtpWM9KGSzFHjbK2RuYUL3xYXpeXB/+YxlQ3Wv2kFcn+Zy+S9XnHlq/yXB1rK4CmB37bTjEwGDU3yl/ISxEkUSCM52KA7nnkHMIl5EP/3m1SBQQ+m8ueobA0fgD9Sh67YNEDw3kgLxFaYMKe3LdQqSoww//PvYZQl5M5Qg53BhOSQjFCqFgezYTHTlaksnZ7LEykYbLUEUhFBsqeXRD6ox9ikt0FCO/t4c1/vQub/HkecTbxW1ZFWkT7xlqRy/b8LG4zdphSi8Q4aAZ7mqEeqjhlKr9C2/KGkOkCR0zahapBZ4jkL9zMtoF+P; 4:596a3Fbx6qohIP1RhaNrxPnc37XRTzjQUFZY+ByERuh4AAGnzocXhyrkk1s6jLGFScL/S85cJsPfC5o2J7ZUL3mx/TltMJ824rpO/YylVrl5FNDOH4aQjFKRWDbxo0eQu+G9zSpUS2hoBBoIUQ/jpCs1k3s2SZjx4UCyw3/o9CSlcLjDAT9nlITSPBwgJtiSaMKBvGHrZdZ4vGCNdSPVzj6WBi6YuTF3eNlrXVWYZlMazkqJJN0KK+AxRcViw0T+gpW7whgKipxoUXd7DUR2+w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:ksG0dIqHGxqhq02xWOxs7KCn3Q2CfmaFkWinzQuNJY75MHR+LvubpuqG345XhygZe4peG4CidO5r1kOH1/Wso02Oi1A0V2obyQVMJ3KYvEdAdE9AvaIX1hWOi+OM9eEgz+mFuYFqXibn+2dMhjXKT3yXFDj+ujM9n6SczYikKc4MI7Zc8iPs3SN1mPqqL38ONB3Z+hNZrEtN8tcpGYCWeauuJcK3hdYtUxwIVsaE7LGF1fj+Gih4HlbfOOnA2YC4hxAk3SOyWRx0lditeLVdpXSuYYiRtwOlSnLYh7FaT092Vkf6gwRADQ7JcBUNrHuZnRrlmh31zqp61hn2G1xKLl3K+oZekx24CT1Rh5TLcDvrWo0dBKGkMKeDpOC+dnYczLwryGD2Cujws3klE+zEQnyp11YXHUZ5iOvk3OaT3Kz5tmK2scaxcCcW9C6Y1ly193V3r/75rNr3rafJMILt0fQRP1mr5jPfOufNy8cd+BkrZmTjwU7zuGXZa0othvNtrElUJzZq4OlnN+nb72nzGMT+TYuZ+NnfRuHovr6DL8n/fyRS/hW3CfErcwnVPoJ5wRLQC3HZG5/WMT5p8tnPNufWJ7cUuFTs3bSBF3THm8F3p1PYd5NevlU++oMXi7Y/uiBUyRBU5/RzelLEWjY5vebjWW/848ewm7N3Yd8nuQSuhi8l+aah+ng3Fka69qsRDu8eZgcAxlkQ2+L6HtaS2VLcZ60+ye2kxiG40f6EOK6jdg36wEjg2eH5eZXTC5gxHGbG8G8KH87RkYOlKDNgTUAC3axmRQrI2+Df2wi/A32ON5Yvpyfw5AXcpBSPbeLvmzjcPGpVQQh3HSebYWJxogxYy8HpTBLDf4bmNi14PWOYbGhnjuXTH4OWHUALhFbuw25mnAdD/GbtcaKOAkuUYqHCkVxFmwsjh5JeBJUCnD+8jhbwwO+4yhc3WZRZzude0trAm9uckL6ABGfwIdkUrrq1vFTA1wAOvbZNbG7oeB/53nau48GorLlSrOkVF+YDXPpPNtetQ2tBck7ialYe+tq1rYrKhKrJ85dlMFXqzsKknv9S8huJUj3EzcqboMlVYULM0D+JWuIwe9icbOTyNs5oqtusvBXHr6XJJsqfCGVF1iCLCBFqpeB78cTlzOjPa0+4H5i2bETZaOlgJEEzZbS5hOYh62bhfZpprVmWYDYRrYKB4+BldHjmyXJ8X+f6 X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:eHhHypkUAlDRkAlFVrGg4FY0hXGV34uqIh0/e3RR3G56Jo6HuXYvn4QTwQQnM7zXBCffAltNX2aIHsiAEkFTmtKNUtiZyFniXnEomo7AYYAdxJ96TKk2sgi8QOWAzmbldMMp32qGtenZHdQY1dPjYLu/hfj66JZ0dTg+AWF9yktgnlpUO/btyTv/k4foESGRdqrKTI3nBH8oImCIHYcVE9fhwdXCxOZU1wEoqei6rgvddEUsW2NsrfZhgL7PBG6L7wYStVdEQiKr87/sqV/2rxV64/PeXWLEFbHPn7UiE+/KTbE42cmltX/TG1DCxAPK8/8oysuofRfTCJxgpTgWStrc17MnZgNkslJHPjfLsio=; 5:leZ1VSHV4s/1XshujyXOy6n4CelmMXujrB5LYbUHemXrsou6kntdcSITDB39qwpyxLSXWWs7mOFOaIVZunzjxDjob9d62906wPHUl2h5b2uRd572Rj3BwPfI5+q1wA/TQpYLeR78sTJMzw8sQu0giBBfZt6o4jlv3QyobL1PVmY=; 24:5FJ2K+olKqwN3v9AVrywTJMiVSbyXc+bLzDTRGXLLTF9ICFPEft6bytg7hdQHlrd8RegNsDYPHu/1xwjQyQZCQHIrr6Qr0GrR4lmAoUkLhI=; 7:Cj6etRREVhED0PsDnj2BRVFYHa/tOTTPze3U2aHR+8R8QP/NXtYw9lJ+bwOBgZGFOmqQIEoIJOEnuveneF+YGBXahN5t3zPZh6foR6NZ4nyCous2o60u596+XrZHR33Guxv6rRLKAJlQp2K8nfoZEd/nLYvElOuwqNxpprbfiNN29F5v3yzickhf6N8M9MaeSNszHeSHBMw7eyF/XMiEEfBVcMYu0IGclZyjvyNiopKFiMvx5ASMIzQ/FtPXrWJp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:46:59.9900 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1726bb5b-f265-48c3-57ed-08d555bbfc42 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When routes that are a part of a multipath route are evaluated by fib6_ifdown() in response to NETDEV_DOWN and NETDEV_UNREGISTER events the state of their sibling routes is not considered. This will change in subsequent patches in order to align IPv6 with IPv4's behavior. For example, when the last sibling in a multipath route becomes dead, the entire multipath route needs to be removed. To prevent the tree walker from re-evaluating all the sibling routes each time, we can simply evaluate them once - when the first sibling is traversed. If we determine the entire multipath route needs to be removed, then the 'should_flush' bit is set in all the siblings, which will cause the walker to flush them when it traverses them. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- include/net/ip6_fib.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 44d96a91e745..affea1aa6ae4 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -173,7 +173,8 @@ struct rt6_info { unsigned short rt6i_nfheader_len; u8 rt6i_protocol; u8 exception_bucket_flushed:1, - unused:7; + should_flush:1, + unused:6; }; #define for_each_fib6_node_rt_rcu(fn) \ From patchwork Sun Jan 7 10:45:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856526 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="k6e+mEhM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw934Lk5z9ryr for ; Sun, 7 Jan 2018 21:47:51 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753476AbeAGKrO (ORCPT ); Sun, 7 Jan 2018 05:47:14 -0500 Received: from mail-eopbgr00086.outbound.protection.outlook.com ([40.107.0.86]:49568 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753041AbeAGKrJ (ORCPT ); Sun, 7 Jan 2018 05:47:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YVYZdanXJxXlNcTNJSusJnTKg0j8Ylp3avAr5Dh/clw=; b=k6e+mEhMALHjXJDF7a8n2nEB0iRkZMT1a6lETNnZ63JsjSuSjoSOOwMxgyhaHUZXrsyfltruc2TUKwWjo3NdHmwMYWnXLsCY0Ug4YRaX7bVMhPAQELJAO1ksDhCdGOWPLvwRqzQjx2D9Sg56EqybGU4Khj1S40YfpjxKo/RWVyE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:02 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 12/18] ipv6: Teach tree walker to skip multipath routes Date: Sun, 7 Jan 2018 12:45:12 +0200 Message-Id: <20180107104518.31693-13-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 064313fe-bcfd-4136-97ac-08d555bbfde3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:kPUoecaw4OTO3Qtca3IvZ6iSFGYyWqX16PpISMA4NzFOEfQl/QOFT+j8f/IeuRgOHXnYrANHFyy19bEyHRszNrNOEDDTWSyFoVxjaIoSLRxeEahif2bFYMaGKDchUTX398hhyGgsTBMswn9789uBoE/Qpp2fINqvSZsl+PDp495nX1gqvqVusnKtR/PjbVHf3yOoFtmamk0C7Gd4AVFodKNEphYNH4KxHcGutkGnGDLHAYXPkQtuGrIz0qSh40zV; 25:qImor8HrcKyEO6tpAj5Yr4WIMWp5wxRAiHYHEgmkRFEkvlrNRfyWuNA6UUBvIjeSqe1BSdTx9gb/jfpA272VaqL7RSZKxKvpYHR59L7AEhTKuTcdsCyqGHB+zWP9TomJOOL/Dtrfs9LQhwAVt/bhvaj2HJRw8Cd3X9jud7lmvRKph8x21Gm5RG84nZzTfsDT12vm/alp95hKF0pWQdd1jJdre+Dg0yrVj/aYzIygnO9m1Hav4NXtaRrkRsHZQaJnrcyXOuc99/HJgsNOSvRT5CJSOAexCJpB1OSTV11AIddCaGFf/Q6tulhN+QbSr61/tpb7JhkYgEWaF1A2H6qKkA==; 31:tUih/EyosTiLqxk04VKZHMuhG15I9fTrWXKL0pl5MdmvLiiHO7DcEBCvlvaDyMwL/6VJHVemMS7xcihu8TaXsJmKDyAciyJxllwPp4tWxInqfiIgW+PN7MgORl9C6o5A4QQDs7Q5nPwmwbxmn4lfkdeQwwbyocS9iXfUF80yOruv5aICG8CkSLHFMSw/5e+FI4HItRUnbSMqPuJ1rReNQf2Y6rPM7emeWsf643nV9Rg= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:cpFtrlHJ4f8hUxwo8FOJtCCLwS46xZT9DLSMzRV+YwCvu1SugKex3ld+3vk/Di8MMGUgSJaZsIgrRY5c3hreZjV5ow0kHyZT7G7kgAW59cdip3xjWiCotKHZubFx3lrktnvgLaXwWH0Ld9n13ulCCvlxoFsKrBKQWnZ5qLVTaQo5DTgGUCtu5KjwHSbETjUaF/sbgLXPr0ujJtOWQztLOrlSyFxY/wy2JcmEkT/gaUU9IJgwwA7wmrkrhIgfQb+E9De0Fj0EeDZGZCGY8AeR5bhUCaRM1U+xglIlqE6vQyhFIMQthabSWO0px7BWsAQ/rVjYKGcD2GijDH31cbtBAHuB71o8AOZzijDDxJ467PnmbGfNiy6yq6KBLNMWDFvLM83mUY8zawgQfnReb2iUxZrYf8M/kL9dh9c6ta+E8Sc+d54fnd+TdOFi7foxHL/oR49vTv6HEytl2V8JX42/NpnUA9KhFW+ytb9Zi8+hfvox0LwpP65OaBI4iwSqhf2U; 4:UNylSWz1jvjYEDKCLDshjedVk0/pfAoaapq+IIguKTm1epJAiDfP763QDy4vDKXVQuQXcwe6ZjH9cBUFhcFKRYv2jM8WbODiVdF3p/0ncsLUuZCdEHy7iqVsqPOVmeC7KTadVdcV8JyJAaiTiwv/pjA9hqQrVk5uDF6RwtmMDGSuP1/0PCMlHJ+qBRrc4OPmuIan/ZpH8se0nZBPk6D8N5RMzfC/V/3estI0iQ0Olf4kKo8r6Y80Yi93jvCNUMp36fHt8DQKRitFNHLXGNEphA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:44+C4ogUI0fS9Z0mF2UPN5FOHetjYC5IPOuWPaS7cGAqGpcZbbLrVXIXq5cOMHqFaZMQr6I8CBcaRCcGHRFPMMXhZZ5jk1F2eq7u9xWibAqtaD3w20/vMaNb0NOQE7my0sUHGIiqcQ9ARxOFhWMXrxVmZRvQmyIsRV5i3mBvuARh8wdznOhSI5JqESiapV3cWZ97LGkMO68pT4MKm2Kj/i5t+dUb6w0MIm6cFIIZafV6UcSXmOO1vYX+2dyvS9/H3hEtFW/qp9Zrz7jEjDe3RSyE5sS/IOPNzCKmBB1Yj1AqE6Kv2HwAXSVy2NvEcv2Xo0oiwbibYjPwSZJZnHZVS/YschS7arw/PnK0a/r5zFeW/+GMOFaZR+mkGaWkHWGaupRUgNozYUN4sxpeBKRntuB8LqoFGKG7zDxaZergOzFbB0dvKI7A7N/Yk0IFaOERo9+uHU0cebeK74jMLfTDaykeB2VWzeAMwrhLcklov7rVTUut9YfIMTpHSQPn9Nj9Zzg7CAlZndjt2V0fkwDrg6z5UQN8nqTgu6oENGzXtrqcuoY5Z3hnLEwlMI6CyYagX2GFTaKlHLTce0dRQR/b4YorEPZqAa6+ETQS/KOdnpqvPrUWqJGmgkmGMNiqvcYFQksREfc6yg5/xHy7LFi35hjHmMdisO8LULLr3N1cArdFkO8+kK53axDklbXLk+UIs/C9lk2Gg/NmGf6Y0ilf/zAePnyRYc31PevQUfNyOx/Qu2KlTc0/GjgJ+50f+uTIic2oBFlmAX/Fw5D+3dyJvyaR+t8Ufhu2wcRfNYlAQVeMLlfAUzWUY8BzvL8pW+I5RtC0V8vpq8lmNyMSnTZkVqFt89vSNpLsl4VkGIAgv08BBaLz0BSEDHJcgPZTBPvxlUpghJfVkjIxkOpDyigJZw+uqDIiUIvS44ISIofqfuyAZz/fk2YuIMsUS5GbDrqpXRTg3ZtrxxlKKhPMqbUcmusw2UG51yoxaxfRLrLtCOgkTURUS3VBqGaqLlWr0R7LwS0t5E12A6zrdH9S2UTQlivcDVjRkPvV2IpZNTbg0uuFkthle1ik4EbqReM4ARu8HqHaseaU5vJsVZN5uDgIn2/gJmAMz7c/aoryQ0UorflvuNJ0bkS8yoWKTsfg3E1s/KUHt1UbCO6wbAdDyxOD9uKAEE0vvSNIdGJ9uG6KX3nRdDOYhUzorlMFuHmHhRAFRDxw/zh97qctTq/NlpOOr6+VsE7mzUQVpmJr3MSw99U= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:Wya8R5YiTumqaLnvAvI02OtY+XV/GAZvWL2H0AhJ/9GEHLEH+5056hmUWAF2R2lTI/fLiVGOinP8wEsNdcl1dBBOaz636TQ/6N+6pWsGg7BvCQd4Ui2sQP+99FVdRNEh8O3SZDke9OQyCyPhCPKp30ERRw8w8LBnDo1ld30/3K1wfEOzNICARohHy22oNvP+VFlZ2cs+0e1cUDorxllOdEEdAD2OX/ga8UcqZRV0BgwqsbXQU7N3yN52aPUf1I6q3EpUcYXFt8Kz2ZGWA0yg1YX3bKEerwWrsjOrOQMr7lWkMPktv+2ydgzOCgPtS8v75m3Iv4tsEL45UrXsBXQc2t41zXZKFzWNQ40lyJ2zKSc=; 5:1TO2pkRpA3lJcRRxaA4DOX8XnJ29MsvvSPHOfX/X5tMtOr6BFcI+7WqAh6VT9V2VUvO0UwI/PqZxjOUD8qXwb34vTXuvBWOkU9ISUcbPW1IlSuEZaDwQPB1Ai73bCiaL0wWjlviw72qcNNFmznx3bryiG5GlfoLGUoZ/c+vB55E=; 24:KKELzRuAb7kkjl9R28iwrJzWBnsoXbw7iIUI6UTquijhq/6BdEbqRgWQ2EQjeSHgC4/H7aqpMkQb5PPXA6xY0QCCc2qgYDL0O6YtFwnvr0g=; 7:aSGMtZ21pR8SABj3Pg1BNg5qHhlZKRWazp3+adaX6/w4gbpahTZ1A2cRgvCOllr+qewmI/KUjSUVNBFT/dmKwEIdKNImORS3NukxcTxw8mEhTUSt3eTnshUKGcR6RRUabbUQlhZmMhnxO/OceMIE+paPV5B+D65EHZsB3lXK+pU2Wo34MKlkvV3/2ajvgw1vyT3y5XNGDRgLmXS1bXYpsebIZCZNL84LySmTzhHfnZ/+HQkTxz/c7X5ORZVknwNF SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:02.6776 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 064313fe-bcfd-4136-97ac-08d555bbfde3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org As explained in previous patch, fib6_ifdown() needs to consider the state of all the sibling routes when a multipath route is traversed. This is done by evaluating all the siblings when the first sibling in a multipath route is traversed. If the multipath route does not need to be flushed (e.g., not all siblings are dead), then we should just skip the multipath route as our work is done. Have the tree walker jump to the last sibling when it is determined that the multipath route needs to be skipped. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/ip6_fib.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index 3bbb89d8187d..5e4b5eef0ddd 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -1887,7 +1887,7 @@ static int fib6_clean_node(struct fib6_walker *w) for_each_fib6_walker_rt(w) { res = c->func(rt, c->arg); - if (res < 0) { + if (res == -1) { w->leaf = rt; res = fib6_del(rt, &info); if (res) { @@ -1900,6 +1900,12 @@ static int fib6_clean_node(struct fib6_walker *w) continue; } return 0; + } else if (res == -2) { + if (WARN_ON(!rt->rt6i_nsiblings)) + continue; + rt = list_last_entry(&rt->rt6i_siblings, + struct rt6_info, rt6i_siblings); + continue; } WARN_ON(res != 0); } @@ -1911,7 +1917,8 @@ static int fib6_clean_node(struct fib6_walker *w) * Convenient frontend to tree walker. * * func is called on each route. - * It may return -1 -> delete this route. + * It may return -2 -> skip multipath route. + * -1 -> delete this route. * 0 -> continue walking */ From patchwork Sun Jan 7 10:45:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856521 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="Sl5nvKpZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8W3qWvz9ryr for ; Sun, 7 Jan 2018 21:47:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753570AbeAGKrT (ORCPT ); Sun, 7 Jan 2018 05:47:19 -0500 Received: from mail-eopbgr00086.outbound.protection.outlook.com ([40.107.0.86]:49568 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753053AbeAGKrL (ORCPT ); Sun, 7 Jan 2018 05:47:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YHW4fy26mQKaSuYCY0w35kVNaaE/9SHFH9rdL5PJT5s=; b=Sl5nvKpZeK0+o746W5JeibNTCRnJjICjTHIeqlsqlpXdrhoPj01bSss+IZI80PRRc5GKzGSTcV0yOsiR09Esnzz+q+MiyYc2jcP3kMFn4ktdvIzECjB1+80gbtfbjTRONaPpEfCwdO3zjyr4UP6WQ7jSkvLTa2fSSVQu8UUvyFY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:05 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 13/18] ipv6: Export sernum update function Date: Sun, 7 Jan 2018 12:45:13 +0200 Message-Id: <20180107104518.31693-14-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d1d240ae-6bec-453e-7868-08d555bbff25 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:vwLJ6HH2lUUcTHjJLkQQ+UgZdUNSivXNVlh+VV15GZIGfJVnsPgDk5f6C3PX8/CaGRejkOrbZ+oymfsJU5BpHoq2b17s+72O1XLjs3TiJHeIqqX14LGu6c9IK3fm+jiK1wWUEsuaHVTvR/BCAqn3djF+8Th4iqHSJQBqXUy3AzwJC8XaJex7I2v42U3tw1ffgLj7U3DAG5Ha57Km3+EXE32xhZ8QFfVqM4bQ6Sfp3EPz9Yjkm5qfaPpPHGnioGwU; 25:TgXst7jSyOgEtGYFW/M2Id0a7BRjZeH7E/aN0FJFGV3a5W9dJeSupdCayVcM0uOCna+0yLV2Ah5neQTu71YaPDCy9Od2dsxN5L3Jsv4U/RyV6qg122BzyJebtoHVY/sjTF/B1k2Bh7NWfc5gbUr2CchRkPU9zJubc7MnM7g9vU3YwryJuRHrDcOWYSwjzrzDMOMt7g/nw7BSerWqe1WJLKaM9vidNbb8NpqErNiK34og4qwSX7jY8QPvhtyJaQ2oiTqzrNxMB/g92hiOZ23SyIs3O1ytY/Sqyq2HmfRpPle5SPvCr2XA2OIH5fMt90GASvA/vZfYygto1uUpyqJjrQ==; 31:kBHrx2vz32gbqltTsDFhYhBuriTcCkRegTimyPhfUq5pyBVvA2yGRJz3+S5DVdivOi4+1Axto2aYGvE5gGYRGF//dGPassCQloOUGB4q6qsjwXQzmnw/Rwh0tv3EbtMYMae4TE1EL702C8nQ9Xhh1CBGbco4umtiAoNDZ33ZR6Yws2v3nCouVm6UgnQasXQh6nkvX1/Tj1p6TVsJwsDn0Y9UfjcTmgpMorrFF7u7H/8= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:U5rdmS0P32jWf1E2MQD9w+FosAhC8bU5vS7QRdjNfCQs5EiAIqFwjA6MapcK+sv/uqvnaOalHDGZRi9JWVEFUl4KcR/R30wYuUP9pUzPTtPc2MMH+DoMewaT9dG7/j2k4vC5nbC/gjTZInnnFTcdxrb7TcQrZ3MBf8Y/NcFzdFQYUpmKreaqJOsw5LgznFMyFMj116zyzElmrXLT2feDs6NXUkhfrCd4DAjSPEPBr3zPvIymK6NaNKFgOMevuKak6YjdAZEJTrdiusnupILdO5AXApzBSamHgtfzclt23oPqEGPlqLV1D06/8EnCG6J1gJdtYtLDPuoGOfJYYfgdKvpiEizSI1CUv69bpwv2HKDrXNvkfvEK22p3bmyBe654xViXf+T+3F/MiwOTnsFcbTZRagcwQNB9UBLkWoVLQdsI9T6MhuiBt6QUi4bsc/oGz/b09kIjBDJv1YUMuIAoV5pya+55qWroPAi56B4trE8l92SHUb/XzoabSRoX9+yE; 4:IMkvDuU+NQvfJiE6JHaxk2YFIh/gypNLr1OIBglzdf8AhxI5OVNwWSNt+jjKQz+N/WTmEcunWhFhDMOay5dQJWs8C3/IOET1saNHuZqPfLS6qyclPQfPnwwOpUBbkH/8GMBJfCINTBlVPMfmGxeGoAscOLWnu8z+Kz+9+DTo17IR3qEqWV3z6d7PtoHkBKJRQkJ/cX2L3unElC9F4QXY82HW0NFE3EINghzN2kMiPLXvBR2xoOCOObuofqXgdTkR9IMQqMd7ygpma9GoDxQiCw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(43544003)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(575784001)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:zESuNHMyYYb1kyVx2GTVf/v9btC1MOhc6+5kHBHoZZ3uTqK2Ei70Zqlo3M72TSZFYEknOlYDOW2U5dpPSz2sBFwJnTGW91BHKjkaDWEhMs2G+Pd0H1yQ/QPDe+SlDAJxb2MHTNEnjhLhUGXQBRBL+9jc8xdknFWkOfcOxQXHB4g8RSubowccg3p7sZULnmZm5h9iNSGQcilPOgMEBZVKCY5faDzKVuG+KNuTgUv4KVLCwc9G7jNxDX84blSQiwlKMA5+5xjeYclZ/tF0rrU81aajXsSVCQ9vk1c/JoIkDpd1RGBVYbDfGUsJXdY99mHCIL+EMrRj8EWNVJW04ngzfGYNYV7FBOSeJ5bE6vKuFDf3jQDZN9CLZk4iRyEwekuI+FF6wLo+XB0qajiuYgl0g0tNE0jtLmNj+B2ucC/XlUzY+LNSV6eCdWSuJmYh1hhuFPpdCre6lMTWqN550xjycri9R5TASaJuRs7cJeXkifSjxoMZaU8K8OG+kKCZYeh/SWkd8bOyjv41PWUN6xJdoNjvafp2s/54h8QaNYF0cxMWquWWrUhZHNmAQpitfyGjRNMlYdsw5zBQSUvm27r+DlnPgxeeVPYTvaQ32rtfWF12kt9fvcVsv0zHes7WImN1kCty3CC3gMlJu6ZqampXKLx95ip9Z5M2aWtRoDaN36YTylbmElk2SSGHXw8cD6TOljrN3rlMSFxhSwu6CNoHQTUrVb1mS4iysKFTgWEeg5/o/c+2QgazD4mPQaZVCnPiuPAyOmmpxpwTDOY4zfZV1Jq96gNqARbqNoTtLk+HhOvHSaiQyoozS4FXac1RHEljz/JbS1OFME/BZCOFfoVbx2P1zDFQdaKL40OkUClOBmtaF+byk1u9J7kOvAVyZNOuOO+MQW40F0VpYsvUIlVycIBNKnZlIfjvypWpzERS9x0JZJvBponvt6y80pOeAKSAjQbLDJD0IUvWkQGjqOFr0ztZ73/IynNkm/+BqlOMDbcawY0Jap3Vg7/e9rSMfomfOBY3nmrzTbh+3HlcDBlhxbPePwklqoWtcUrMY+Yp0yJBWTD32Gc+KQMVVzuP8U+Vgv/tKtmMfsZ/WMA4uaWe86Jv8BxrIf9p0YrAt78nBSIZn3GQeuZ7dgqgTXmLzpI0ZZVpdM5Fu/BHWKxgwL1ALhXsGKIs8fcvLzxL4zEAInpSf1yrqEDr9wf/rJQnxgSvx59R5FmyOemrvKGPbR93XgU+CPQpwUsoaNWLwNfykEWI+phv3dp9x81h64vR6QCu X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:J+gjw2UDOGAUXsbp3O9B+GYC5HHbJBBl/XMjtE1smprhxK9eWPSHH3qjKyQ0AysLvfCljINdaHvcpaI7f2e5HbfzSFGpqMwbhZVAOd8h+iwRB5lF4/tWf74cQiJxEJ1sVMFy68PM9Ebihm4muY/Jff6QogOXfQi+HyZlr/X6sDjWL87YRgIrIj6aeIPZNDQ40VvEKclWrEB8zF4bp6jrPUJgMZPWMTDkzQAev8h/lmrWzHZOZMXE70Ho659DL4o7iWWmrVHbQn/yH0KtAOvtBk2WA9vlI+AWbb8D+K+C2NxXpvIJWnzx/cTbK66L6QETD1Wv58AC5GLPzWNw6efI8pmk8BFbrPdNF/NWdcHMadI=; 5:dN1491ZaMvo7LImWCzRg4qwNRfqSBi7YrEYqhYsOv2DDyBUgS8Vu4MfKrQx4Gk6aW4ENAOYHF6wpEa0V3xPB6eqlKlu3JQT1+Fq0OkWXiirOW1+D1yH++hz23O7XzryRN8Gbk+YwDtXfUINtsRyjWv+3omUw3cvy1nWVHgBiPZY=; 24:8PFl70uSSy1BfsdtqzbMBDh0U9Jso/2d28da5zfrq/cvBIuXsVYMoYbxhDfHHtbbQWnYDE19AF14A/UiH69j8U1tl+r2J4165Marlo3MnYA=; 7:z6N0H9DDQJuH5wJWLjx4f0gD7/mQhGHB3EVCX8JyR1M2sEcolu9gcGLCSuvrWLSiy/oI2mk1R7lTkHXgHhXQOKJu+gNyaiw7SOwXo1Lzt6KmuQT8NJdVGNpvKhFMNo5bsQrX4vRGEPwMnNdiUpwqIOEF8gLU9fcsTKv/XQKhI5d56DkVxnxmOloo9JaGm+ewV4tM5k3381l+xl2sDBDYTRA3Xsy4Zeg/USgiVDrFBlYBdmkQVVhBfXEyWVDe/rhG SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:05.3808 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d1d240ae-6bec-453e-7868-08d555bbff25 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We are going to allow dead routes to stay in the FIB tree (e.g., when they are part of a multipath route, directly connected route with no carrier) and revive them when their nexthop device gains carrier or when it is put administratively up. This is equivalent to the addition of the route to the FIB tree and we should therefore take care of updating the sernum of all the parent nodes of the node where the route is stored. Otherwise, we risk sockets caching and using sub-optimal dst entries. Export the function that performs the above, so that it could be invoked from fib6_ifup() later on. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- include/net/ip6_fib.h | 1 + net/ipv6/ip6_fib.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index affea1aa6ae4..ddf53dd1e948 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -405,6 +405,7 @@ unsigned int fib6_tables_seq_read(struct net *net); int fib6_tables_dump(struct net *net, struct notifier_block *nb); void fib6_update_sernum(struct rt6_info *rt); +void fib6_update_sernum_upto_root(struct net *net, struct rt6_info *rt); #ifdef CONFIG_IPV6_MULTIPLE_TABLES int fib6_rules_init(void); diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index 5e4b5eef0ddd..c1bbe7bf9fdd 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -1102,8 +1102,8 @@ void fib6_force_start_gc(struct net *net) jiffies + net->ipv6.sysctl.ip6_rt_gc_interval); } -static void fib6_update_sernum_upto_root(struct rt6_info *rt, - int sernum) +static void __fib6_update_sernum_upto_root(struct rt6_info *rt, + int sernum) { struct fib6_node *fn = rcu_dereference_protected(rt->rt6i_node, lockdep_is_held(&rt->rt6i_table->tb6_lock)); @@ -1117,6 +1117,11 @@ static void fib6_update_sernum_upto_root(struct rt6_info *rt, } } +void fib6_update_sernum_upto_root(struct net *net, struct rt6_info *rt) +{ + __fib6_update_sernum_upto_root(rt, fib6_new_sernum(net)); +} + /* * Add routing information to the routing tree. * / @@ -1230,7 +1235,7 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt, err = fib6_add_rt2node(fn, rt, info, mxc, extack); if (!err) { - fib6_update_sernum_upto_root(rt, sernum); + __fib6_update_sernum_upto_root(rt, sernum); fib6_start_gc(info->nl_net, rt); } From patchwork Sun Jan 7 10:45:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856529 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="sOZBK5QX"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw9D6GkPz9ryr for ; Sun, 7 Jan 2018 21:48:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753721AbeAGKrx (ORCPT ); Sun, 7 Jan 2018 05:47:53 -0500 Received: from mail-eopbgr00086.outbound.protection.outlook.com ([40.107.0.86]:49568 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753462AbeAGKrN (ORCPT ); Sun, 7 Jan 2018 05:47:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=LDHdOU6BjyCNxVfUYD0s63l9KrFeZ2N2bXpX75JaGBU=; b=sOZBK5QX2B+/4uYKvKj61iXxECL01q7b1Qba+r8raXOfBUnclsEfHxMjt5U8FoT6hEFlUxhE0AILa8ZKHheMkZDrMieU7eW+8c9eYOhcuTLAxxTWXomMtQ5uqjbmyTlLyTrFFCoHT49wWmjKP5nSpL9dU1wOz9VH+XH4AYYhwkU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:07 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 14/18] ipv6: Take table lock outside of sernum update function Date: Sun, 7 Jan 2018 12:45:14 +0200 Message-Id: <20180107104518.31693-15-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 541ca93d-0a20-4a06-0ad5-08d555bc0059 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:Jda29ts7Tg5ekruI62mm2Znj2X/9DMlP/eOeuYLX9QEhYN5OlegkfPgF/n+zC3OuHgMtvjJANEYli+FYiHK0iKQaV1s/9QPm8ps1DYErEG7HIxO+jsDVQcwDk6PeCxHdQz1qp3YRfwxVNloTM+jsK59nIeqDZljbC7PWDZVdhjVM4RDcTytBaJvdPkCql4BN/T0MAe/usv1zVf87rg8kQJfJ2duSEMK6Eu+Gkvj9Mdt11Hr2BXV0ENh3KJmmgf3F; 25:pL8xGS7IJohtkJ/dA+nC1yfXjTCiEFTJI+8S2OzdMOuQHQIFRLWzSe2lvNmn+qZUZW8rbtbIQgQKF8EF8R2D0VBXNGK/8xg/IrTpbza5Gh7p1lV3hi9k3twu3FA6okEiP934nE3sdUPb5VdC/3EG3Rzw0AG8XtDqBHC+CKtlc1l4+e6TmOuEnk6Zfp/33hqDcuS7fKX/wOyK9qoyyKBmwu5i4YX32xzjuQcvttT3x7EC7yfAtUoGtezjxv92rei6qoAbPXHb2EYieH919+iOYZpe6F4RLn2HjRDkIVwF9l/+YAAjwC+sSSRP0yuYePqhRONgqQZGluqgfaqPOGNZNQ==; 31:o9+tnIl/+wA4L5nYm0qu0rkgn1KX75BRiE1oqe9ei9gxXvugRocfxiKXXzOc9IZZMhvnxvkRAEZjMGLZrOoLzDlL8bAimUFph154d1srDW/cMp60k+mcAJjXkYCt0+yiX3dPVhACpS55gbPTw2IdUYBVACqXBFNmeuVdDKDoCliMRAArUbHvFv7Zi07gZ8M3hNMWa6aGhMp3NZKTJwHYDmpSLWIdIvfA8nh89DMVQB4= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:tp18Qda3xr4aBMhHGZuvMoCtSJGU3V2y8ig2+lJOrSeG+YHpcKoxUv3dclxQmGukcGvhJqu/KJ+rz4tZBDwcQECUJdEVtPXXCJIhneFBjeaKSn+Er0NUNLOoek6rc2LDcd6zroJ7KuIhXSNv8TKUDXJNpfhKAIsGJDMrhVrJPHxFvg3Ez+l83eWeklrQpV4Wp2r4eC+D8KG9cA13WEvtLbVD59/YVvmTAtnNM7qvXNujNFlnKznk2xVBI13DNm+fwe4iJ5ToDJIsKmRgl/OfmC7hvm130mNVyh6ZP1BM39xi4VMjhFwBeyhEkuCEhgI7zIf/ENWQ+34b+fGvCTuSpBt10viJloabtkhCUKOZ2RQlpLuohwIy+HIoelHItVoFovVBR3y0epkP4LLLLrjLOpjut72PmN1r9gG3f0HV4ozkUSL3OMzncid+Zz5o10cxzxtaMJLl5Ex+2SUizPxuqnSQ/AP+OzpvJmalAtjnSbrlsl1z4RLP2A5b8ljIay1N; 4:Fk4ONgJO0LFce23ku0Wqfq/by6mX7KIHjYA3BeqYZo/fDlOMyn4DPWSpjAjlvz5SMzrSndCU3lrpCI9ePsiytZRIDvfMuUT34zttsZ6Xgn2CY3IB8SUYWOvlfC+EfahbTRe6vtdzAoV23Xda8NNzHNQukYfq3WpiGFt9NahEfhDTxqBhXRon3IsA6cSBXZpUGLWVRDHfJTzHlOHMrTyra7wA1az8JG6LwlWDOp8BEChcXs/suW09HA9pxsmkE9nXMyCVOvfSubdWYynwhzqzlw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(15650500001)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:ch0OmLPXWdXozgEtO/Oo2x3FfGSp0O8JqZTwy5aNnle+hByF2n6xCxpk2oEkOYxhlnQ/ba30DZDP2lwjRiCPOwTJ6U0U+6FdAl/OzawPG5OhtMUCzFLQI1zNT9FSCLz/qRrFK/zvRJPuBvVJC7L3mCCJYeSpM43fUS2RedswA0HXde4/L6mTeKrdoRNnAClyJ1YYpOnhzORUf0bvrFgrwsPy83MQFgUzC6u5BzUBG5aJWpHsBGPPY8ida/6fOK0kgkTgUDTOB5Hr8BWAs4amZlTDE0Q/gZ6QFkue8eKI9hMiAU6G8g7LOG1HCrWYe6S53f3jVAhswKlHVIQJ88X+E5Olh5o8Pg4FpexXR7+Yq8BrHBZb/bkGKRSTcS/FSNz0kyTqP3aJtowv7s8Pp9L/XCCrnJaeEVVs5p9CR8YYVkAdrBbi/s+0JGAx8GGyYH2h+5wgDX/IucO7OnfZRjVndSSGanW1O2ULLff3qEKwkp1+sT3CXz024pZd1VF+EOJfqd0LVircF/TBIFZgUGGOagFOaEzR9EZRBShU04c0r0GztrYkMGOGqdR0DzW3a9vk4v0dcUjeKWzuXmn19uT1ioInBeENbERfzSSEnzOR05TB72CbufhsOc8YDlhWBxISX2KR5Ert5i1fWEYjNviEZ/Br+RE+RljbjurgxAUn0TQEH4vXOHTbd6dP2DYFLqWlx5ld9/WFy/0C/8HyhvNkpv6egULzwc70FxNTWtP23telrGsbA1bosXHhwXmUhfxWYEhIwjzlKv+p4eWF1v+tkJtQX+l3bJ0/cDnQOCayOlbw7socHRAv1OLbYUVf0WX060c2/0B1XegY/KakhnzxFy2CyZTM3ckuzZ3W42U9kE02MzFZTMMMNDOTc8PLymX36IYHhUbO+S5JNxSd5RQ6GepX9PJM5ux0C2iAWmFr3eimZ6VQAqjEl6npWIMy/NAd0OYO9n5ePn8Ojh878Sp9/wKKJ8Jo2Z71+3wF2UGgJDeF9rqjLq8/jPoSnp0GcT+n8e23bpeyFEYhQNHMhqGWd/bok040ANaWdUreAu46FR3Cd+QDUEVxEh47P4lyAKfLEQtfAITWOo1bZzGzECTht4pMu6BnD/Sft+J01AgdVTu7oxUQjJ1wGFtz1cj23rGds1c/DGdYM7aj3+0m51h72BplsIMjAg5tDspjBa73t2CfsBWMPZYtoyfxpZJRuxq1gYm8RUZBoV9viKBvawni1x3GwgFDV4HDR0GGpxo1gt0= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:6Wmi57TNX1xJpKWbi0KVW/zVtsZmLiX5SYiANG6mS2UJmfef+7I3W7b91v84/lwtDB3UNg9VOGoEIRA9w4mx1PEdOVhuSiAY8LOYIHuYZoM/P+qeLd31PUUm5/sZcXllu9Z5bIHBQk9uCVKC5YQNqq1+i4+6x9sCYjLedCcSneV9eJxKxh1HEmyUA38e1sntx+XPRoTeqhe5oSyDBpx3oYpj5GxlZovQOmNUmrJjgP+g8XLUrDtcAW3QGD5Xz0pfKEUBnqiNH+AduDTTGcdfj/1DiDmS/YrJTeSCdOtnLT9DKMT0C6Uc8VcK03M/aK6bUfmqhrCvypnvRLS9Jq8wWvhsDG5OORQVWT50GvO+fT0=; 5:troAFCSQJbr56cr7MCpgkN3CQ83PmAzz0IxXGx+936LeNm0dGtSv1/3Y+TtBkyh5ott1QrynLbbj4lmMUKv2I1HkPX+Pu+zvEOk91auMwpXlprSNx2ecZWuSAvQpaUD8mWXdoSk891bSA6SGapsFbtbwQpgsVdg9xLNLB/GbQX4=; 24:HhXe+lBnaaDGN3DTxSS9FOfs4pG+jVNWv2goy4KSgyBMfo6fm5//FM+suCtI0GQDyk3Cyt2t7bmhGWVusRC6DCp8ib0egiUxlx5jivjCQdw=; 7:sms9hJp2m9BTP7n4x3HlhKjZCABWfsvXA2jlM6SkByKxsmVg5m1l4jKo0wRxWobGl6m8XfP9jOrdhJ38d9/t/pRIjo9+Qdq5ETvT/lQtMJzyHfQHYjbkCsRCSGNBgKToHhmBYwc7f2KlIJeghsbGHSkQ6FxqqPNwtulMagCQ5PzicirWtdngzs7r8YPYfZE4ttJ0G9IUalNJy4tsXP1XmN2EYoai87tfk1QOqMNr/DiP8N2mgOq/wdWJdW2XVjLE SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:07.4590 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 541ca93d-0a20-4a06-0ad5-08d555bc0059 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The next patch is going to allow dead routes to remain in the FIB tree in certain situations. When this happens we need to be sure to bump the sernum of the nodes where these are stored so that potential copies cached in sockets are invalidated. The function that performs this update assumes the table lock is not taken when it is invoked, but that will not be the case when it is invoked by the tree walker. Have the function assume the lock is taken and make the single caller take the lock itself. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/ip6_fib.c | 5 +---- net/ipv6/route.c | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index c1bbe7bf9fdd..edda5ad3b405 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -107,16 +107,13 @@ enum { void fib6_update_sernum(struct rt6_info *rt) { - struct fib6_table *table = rt->rt6i_table; struct net *net = dev_net(rt->dst.dev); struct fib6_node *fn; - spin_lock_bh(&table->tb6_lock); fn = rcu_dereference_protected(rt->rt6i_node, - lockdep_is_held(&table->tb6_lock)); + lockdep_is_held(&rt->rt6i_table->tb6_lock)); if (fn) fn->fn_sernum = fib6_new_sernum(net); - spin_unlock_bh(&table->tb6_lock); } /* diff --git a/net/ipv6/route.c b/net/ipv6/route.c index f62d24948aa2..a3bfce71c861 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1353,7 +1353,9 @@ static int rt6_insert_exception(struct rt6_info *nrt, /* Update fn->fn_sernum to invalidate all cached dst */ if (!err) { + spin_lock_bh(&ort->rt6i_table->tb6_lock); fib6_update_sernum(ort); + spin_unlock_bh(&ort->rt6i_table->tb6_lock); fib6_force_start_gc(net); } From patchwork Sun Jan 7 10:45:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856525 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="ZfnarQVW"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8x4C14z9ryr for ; Sun, 7 Jan 2018 21:47:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753697AbeAGKro (ORCPT ); Sun, 7 Jan 2018 05:47:44 -0500 Received: from mail-eopbgr00086.outbound.protection.outlook.com ([40.107.0.86]:49568 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753041AbeAGKrQ (ORCPT ); Sun, 7 Jan 2018 05:47:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=FE9wvWfX1l0/QCt52ggPGoaJzvUHCIMGz/07KW6i4gk=; b=ZfnarQVWvGWvtnakNPV++L+TJvNdFUuK3o76Cyvpefndv4YO+yK6LR/ImfuP1G2mZoOUDID6NMv3HuNUxHCXuwzATQbEzYgAUuaJjFbjTzYM9CiSvsEzTYAD3qd+se32H4ji5pFUFGbPSO/AsOEqnQQqjGfRCzKhfbKDidvv0Qw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:09 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 15/18] ipv6: Flush multipath routes when all siblings are dead Date: Sun, 7 Jan 2018 12:45:15 +0200 Message-Id: <20180107104518.31693-16-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f360fa47-f172-4df3-ffb1-08d555bc018e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:AlSQVEz8RxoOn1Fk93kH8azPxXKgULfg541drn0Mmk13VkNfdy0uITMXSD+3B6+4OfrjJfhAXk5J84mDrbsaYxRaM4G4m1WGuuy21PPXJEtU/s+ZtLZ2esbSn9sy+3edM3ccLQV15D85owuULzqng8P8ah6U13WdtR9xarTk6CJ4r/CmMfeVhJM5fpJUtLSKhKup+UG//C8zfB/SKAt+LXWPYn0sH3EPMuRez9LLmQSCY5VozoNx7Oj9oMqT/FHh; 25:ggjprY6PDgdve86wA1Rq9E8YJ97F2ekvAb87XpVUdBOJ5U6HbMoX9ZCoYDRjO+BzL0kHZB27cSBeab6e6xvBNkqDvr3HxhtXBT/UIjZE9CwoF4hVVLq19YTL9dQUmV8s/8z8A/lznlMJE3XnNLiHX3SEWyY/46c/qnEd1hhMs1he5g/m7ApLJ6mknPGONaV1a0FPNMLWIFyvwdEKAWaH8d5V/FO6cCYuJb4mhzz1Qkzgb+b1IvI7UUvtDWdZJ2wHoia1kaaK7P3uzFoMxM0eTPMa9V5VuXkKuK9pHBqrcrM7CjGDbimCWPJydA1kUr08D0nKrj9UHn9XNXohPpstYA==; 31:+UzsXFhCrku07DY8Pb4CPcPWxJQprOgagY3/UJ7kKFghSTw8EQZ1ZCyXnOHF58iwQvrFSW2GKzsfteWHhCTXY7Z/AqjWtQL0P1HOw3em7/lkQCzoh8EkqUZStzlrVAmBQYwhjksE+wtn9j9nHwY2nrQAgfHqkggnUP+ciC6E+m68CEvKE2gkhB7nCQ/vWCPzqsLpXF1ro9ikuTS5/nTpdq8lCLGWGPrpE3eqeFxOUw8= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:w3oDRKO8OerDRBdDmUq96ASYjKOOGua157hB+4PYO664KnB5W8WLHf6llTZ0o5kYzLtdpHabuI12a9Zytu8bu1NQ6hkkexSdW2LSr5L1fktBHTqQmvrC3G8JOFUF6FVz2m8z/+iQN4UexG92jafJ/zgqHRec0yXAfypVw4F3F0usB2f+HiMA803XzfRSiAvQ/4cmYm0JZcY399El/Lql+GYaDDss8/GQupIdj0Vg8vBEq7Y1VHbP+/3gq8bsyWvoAlzfOSaFzKlDBlBCYpc5eMBet1ZcOww1vyGAiBlpDFTMyvdYWgykxd/zLBm0UgWK94TcE1WO2Fls8ACwU/U/qF9MbebGt48oeRsRlQSnqX1G6TWp/JmsBgxeDTK6nxqpdIie9SPaxY9Iw6VKUEoQVR5MDsvAmWby5VfdC9rVidq73tO0LC7RdUIipoKoQPJXma1c2CoO60IWasismhTou2rnZD6Vqu0M32uFlV32qY963f5B+UfbUJ2Y8MDcjhsG; 4:8XVgHGiwFBvmAsqb48OqdOpXfcvM2OWg5oJ9wCskAWpeXwHPncKON0UY/AH2RuSrbJNk+8IvjOadKqW+6QoiE1CnznkjNRfFw1VsXjFFvqxP6PiPblsYuj8dgLCHSFSzenXT48WktkerDP4f5bkKQ5sB2uUMHrZPCqYH46z8lGcGGF26lsGnGexqTtjHhaUQ7YzE3RrjodQs2ObP8CkGEEMs9DCafwtmNQSzGJUd5uGXNkXwTcWEy3sxwOgETNhaQRTOU3MXOcP99/fPiMA3cw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(59450400001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(6666003)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:L1L1H3bCeDvG2mc3h9j9sv1L2nn9BP1r+mQRKYeQ5HKm4JeSFLY1/7MRhFRAnN6D99n10Cmghu+Ti3d2CR3aJGBBcSAVzgQLwGwS2FeJUeoDvvYBlWA4RfEmq9WV+eWlZRW4vu47MnQMPN0VwCYC0rv6h4ocLrARM3txTvLfJHyBVIih/UHearXVPz69r+QrFcqReRJ+vRu76umkFxzPf9pxFYklMnBJLBrqRwy9g6y+DQ/6twvJhAhTSqXErDcIqMSy9nOLWu9Fcxx98xzrPqvxzjdxZybqpnbf//BsX79bJg9KBvi3EG9SmSIkBCg40ECzsFTxNKsxamWoKR3SZHoK9YPaiIoKpRIPx7GRYtJ0hXEMoUCL5f69gOXCwj07kgj77xeLgvJ4reBVAU3E1a50G+nqpL9TqP0YT3c0VsTK5EPAYeR1M/T5CIIAAyfUyhJ5rhwCgppjD+ycrBYT2yO7Sct230HrMmimcN7vdj7YDAEgngUM7vONu3gIzQem0q7tLldPaHxUxasnbSiGQKWDdL52S/SO+1bBWXMQoaTgUyyrc+DCEJjtJcObJMcpEAbdroeoHlpRl/NfNh82CEHSBUYFXinThpfYV5NYqXly1PX0ZFs61jY0EZ17sTnsI1v/zjI+LJd0UX7ZS69mcutbwSUcgU2bpeyGf46plD3HBHiRac9Hbt5pePpjTv2z+od/Ex5FajuF5b/I8dVEbspj/t9aPy352cGXbKZtWV8IIho5FWLI1lwM9eqjBfIFtHMl3TMGLRxoOlXDA/pRsSNQzMPVukVuiy3yzAqzrcr/nk38JcCCHX/A/PEtB7QJMVcc0OjAUdo2F/7a20nQPT9lFD4F48bVltN0FbgInp/WlrO4IeukrmIGAOVDjgKnZKFZwXwTeW9goyU5FEEOAg3df2vAduIuLUgHWYkA39Qa9l9nTVaTgX+DaTxsDbig2EF6g7EpKK8vNPxN8WtJbeXpiqKfE2BoZ/8+GWNglKrpla0WP/Bx10eDjVF/hn6ebcImCzVoDmXXqMTKqLjjj6Jgz7H2yojdeDGN972pzX5jH1lFSeeX28v2+/bEjH3rgTL72cLpDzNq9qc2HLpWWxm7Qn9uQzsXmMJ/kni01lWO4nlqaWjthpmzOk3Lt9IIeRg0Ux4SV0xrZp/P8hWZRV+blw+7AFtYcHc8r3X3NLTAVqrGewbcicMEP8Spo0YF X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:IL7M3tvXXen14LdMmRJOu7+AVxb0vhPYpIZ+Dv+dMrKzUPW/ELUuDsmvv1SqJE8A84OTzgn14+ujOx50eYt3wAjk2+XzRERF9TR0piNekGVkYfGfZoR0Yv8J/FEmn9MoVNHuSKXnI3MbjI+x0ScsUvrOmNmiLvx1tNd560bbPPCcXTDhuWEYBzE+wqU6C9NSnlKZQU9njIjp+eGXON3SX+JWwmMlrBgaGamQKQ42JO8yzzxjEfXSLhR2d/OuNVyMfNkB/kWnhL5Uic9N4xq24dPE+Gjh9OCLZKNog+NsF/rrpq0WwaSTINjyEZ7MCVWGgzyklMbkzNP64oLBmVlvqDbpruMfYDYi4KJu1rsh5Tg=; 5:p6QQj8iWjHeKCNhwSELfMaNela4JFAHO6LISbCpQyQqg7GafEIA8s/vZzu7WFWAURyDkVyzLVCe4TaI8GRXg8uoUmXhAq8Qq1dp67VeIfMcj9fMGflDev5+xSPQU2/1E1FS6OHEkmMTjtKxtF1EwqfJl3zfvXXaE9bwXBHiFAPA=; 24:QJJV7StIaVkfwOuejywmdWYt+TJ8V4E29dmwOGLov18e4LjxgeTkpz5OzyIpz+UNdXutcsFtcVuodG77XXjTDSmTe9FUdn/+ZTy6D0EvgUc=; 7:j63La1kbSH/F6I7Jti57PFxp+IeSe5N9q3EWNJb20GuKv+LajmaHrWCh4gXiKFFfdQf0WJoqQ5vHqV7VA/GytzZPj4BAfPqI2VSirzWMKHFFVlIrkW5F/rf7V/Z0E1Ebz8Q8xQdR9e4pkT+yq7AfJFtDklHjo/hlQwLMzC3fPxpLIVqXZf06fJIBa4r9P+em7jq2NSQ9tWxCpE8GzAfEbqXXzuXeRsfDS9hXYWn/kyqVcnco29BsNDmXnhgzC9oo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:09.5528 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f360fa47-f172-4df3-ffb1-08d555bc018e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org By default, IPv6 deletes nexthops from a multipath route when the nexthop device is put administratively down. This differs from IPv4 where the nexthops are kept, but marked with the RTNH_F_DEAD flag. A multipath route is flushed when all of its nexthops become dead. Align IPv6 with IPv4 and have it conform to the same guidelines. In case the multipath route needs to be flushed, its siblings are flushed one by one. Otherwise, the nexthops are marked with the appropriate flags and the tree walker is instructed to skip all the siblings. As explained in previous patches, care is taken to update the sernum of the affected tree nodes, so as to prevent the use of wrong dst entries. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- net/ipv6/route.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 8 deletions(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index a3bfce71c861..1054b059747f 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -3486,8 +3486,10 @@ static int fib6_ifup(struct rt6_info *rt, void *p_arg) const struct arg_netdev_event *arg = p_arg; const struct net *net = dev_net(arg->dev); - if (rt != net->ipv6.ip6_null_entry && rt->dst.dev == arg->dev) + if (rt != net->ipv6.ip6_null_entry && rt->dst.dev == arg->dev) { rt->rt6i_nh_flags &= ~arg->nh_flags; + fib6_update_sernum_upto_root(dev_net(rt->dst.dev), rt); + } return 0; } @@ -3505,6 +3507,58 @@ void rt6_sync_up(struct net_device *dev, unsigned int nh_flags) fib6_clean_all(dev_net(dev), fib6_ifup, &arg); } +static bool rt6_multipath_uses_dev(const struct rt6_info *rt, + const struct net_device *dev) +{ + struct rt6_info *iter; + + if (rt->dst.dev == dev) + return true; + list_for_each_entry(iter, &rt->rt6i_siblings, rt6i_siblings) + if (iter->dst.dev == dev) + return true; + + return false; +} + +static void rt6_multipath_flush(struct rt6_info *rt) +{ + struct rt6_info *iter; + + rt->should_flush = 1; + list_for_each_entry(iter, &rt->rt6i_siblings, rt6i_siblings) + iter->should_flush = 1; +} + +static unsigned int rt6_multipath_dead_count(const struct rt6_info *rt, + const struct net_device *down_dev) +{ + struct rt6_info *iter; + unsigned int dead = 0; + + if (rt->dst.dev == down_dev || rt->rt6i_nh_flags & RTNH_F_DEAD) + dead++; + list_for_each_entry(iter, &rt->rt6i_siblings, rt6i_siblings) + if (iter->dst.dev == down_dev || + iter->rt6i_nh_flags & RTNH_F_DEAD) + dead++; + + return dead; +} + +static void rt6_multipath_nh_flags_set(struct rt6_info *rt, + const struct net_device *dev, + unsigned int nh_flags) +{ + struct rt6_info *iter; + + if (rt->dst.dev == dev) + rt->rt6i_nh_flags |= nh_flags; + list_for_each_entry(iter, &rt->rt6i_siblings, rt6i_siblings) + if (iter->dst.dev == dev) + iter->rt6i_nh_flags |= nh_flags; +} + /* called with write lock held for table with rt */ static int fib6_ifdown(struct rt6_info *rt, void *p_arg) { @@ -3512,20 +3566,33 @@ static int fib6_ifdown(struct rt6_info *rt, void *p_arg) const struct net_device *dev = arg->dev; const struct net *net = dev_net(dev); - if (rt->dst.dev != dev || rt == net->ipv6.ip6_null_entry) + if (rt == net->ipv6.ip6_null_entry) return 0; switch (arg->event) { case NETDEV_UNREGISTER: - return -1; + return rt->dst.dev == dev ? -1 : 0; case NETDEV_DOWN: - if (rt->rt6i_nsiblings == 0 || - !rt->rt6i_idev->cnf.ignore_routes_with_linkdown) + if (rt->should_flush) return -1; - rt->rt6i_nh_flags |= RTNH_F_DEAD; - /* fall through */ + if (!rt->rt6i_nsiblings) + return rt->dst.dev == dev ? -1 : 0; + if (rt6_multipath_uses_dev(rt, dev)) { + unsigned int count; + + count = rt6_multipath_dead_count(rt, dev); + if (rt->rt6i_nsiblings + 1 == count) { + rt6_multipath_flush(rt); + return -1; + } + rt6_multipath_nh_flags_set(rt, dev, RTNH_F_DEAD | + RTNH_F_LINKDOWN); + fib6_update_sernum(rt); + } + return -2; case NETDEV_CHANGE: - if (rt->rt6i_flags & (RTF_LOCAL | RTF_ANYCAST)) + if (rt->dst.dev != dev || + rt->rt6i_flags & (RTF_LOCAL | RTF_ANYCAST)) break; rt->rt6i_nh_flags |= RTNH_F_LINKDOWN; break; From patchwork Sun Jan 7 10:45:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856522 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="bTz7Q8Kw"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8c3zklz9ryr for ; Sun, 7 Jan 2018 21:47:28 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753630AbeAGKr0 (ORCPT ); Sun, 7 Jan 2018 05:47:26 -0500 Received: from mail-eopbgr00086.outbound.protection.outlook.com ([40.107.0.86]:49568 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752942AbeAGKrS (ORCPT ); Sun, 7 Jan 2018 05:47:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=cEIyX/WWePOD4Pt8pXPV1FUjJ+jKe1c630n4HrSjg44=; b=bTz7Q8Kw12AabivR2oOnVbDkeV6dxpSMkiUdhVeLXkUXKV33Z822xSXM1yTIJrGUAdxdjXgTfZaq2SzM/2AkSXxdmMbeYbCskZJlMGIe1/JnvzFEsU9oGcbRgAQqfcaA5lDamahR32R0vAEFfUNctk4G1mMEvK2Wqy0Gk0+vtqo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:11 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 16/18] selftests: fib_tests: Add test cases for IPv4/IPv6 FIB Date: Sun, 7 Jan 2018 12:45:16 +0200 Message-Id: <20180107104518.31693-17-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 9e64cca5-4dfb-4bad-67ac-08d555bc0318 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:Y9Kd5/g/HI0LjuLKRp7ZWk/LOzOS6zjIJnl7Q6Z8HY+aQVzijkC2TL4uJi/NHJLGv1AS4Bsu5xl5ZcAkoTaez2kNXth0ElxZBmKQWuri9ycyr/BlWKIoyH26y1XbeYPd58yx9dARokEfll79Sgw48TheUVL8FGcrqqYpMxCpEAg29Jz5N819VtYb7kNrH5k/VF9u051FfwpIXjpP1qPiIQYcx2fXxDvnAdsZTXY45mHFPKKeHXlJ03hBr+Ogqttb; 25:WkMPc2LQVAUSpYReLtZNFC0gx7Z9UJ5Zg5W8Kjh9UL7Aiu3TGVERaHmwYO7ldrIOQLvjt2XYxQIej1acxi3A9DaWHMFnIMkdmgulNriPMDZw9IZqKT0beMJMo5E09DgFu0/5Iy8+ld1H+8QOhDp7WnCd15gjUgEkyDx8dX2oVwAeLw+REGTJV4kF5rTYvDHmozfestqAUSfG1EQ12ir9Ujg9ZQXtFqCqFGbfseh2WdAKBZSimlqv3Obgaf6mmtNL2Agm724gyHNPm4TeGk2TWSnWSxVvLTwTleHVyq4kRRfwy6QI6jMDt5fqLz6yWXTmdXbK3JTx85CfBYN4KTfhNw==; 31:mdXwfQRWx1ABEH2QDkNgW15I86h00djNBhrgYhzZMPPQgdD0bjmT+KjOoLa+dCrmnmfN3quViSn3rk7CxutYCe1Q//KBRFsvnZP/d16Xggs6gWzFONvXD3OKZSGUplUevOx7I6JzrjOZlJGTrexh5XXPnzBmyyHC74IsC/34u60nkjIqG8M9TG10cbVUvZmGIytS3EUZB5WdRFNPVwEAZx1uAzoh6SxcmHxuSSlK0l8= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:UvJ7yrT+2lT4GJOAwOAcPvy62wSCzJHgoZ/36CZ2VJwPnNxVViNuZGXLmVLDYZX+if/iTeoC8nwUrAMeYgLETLnZphfq+OHJIkCc0NMXt9xmK9GA8N45EMqyq2DiD6NqybRnl40pZOP58jAUDUbaiopxzh8S/Ml3vdsMsMDwUMJHzVaXosB/LcBwvgbUGu4lUARTaHxf2XWdGEk2BeOTXqwFNbsEmaX6pHrPZ91lAlcrXl+lWCXekIsMY8qtid9g/rmyU3u7SqrrCg4Mq2snBVXh8Bu72KlbwYCmA/4kZk85EsxHz/nFudA6uDKhn/av8MilUI7l4SavaU8mlckj1BtsvatkT/dVyT51qx0A2GvJBLZks2cBnZa9Dc/RHkTWpuLNBOlReoRsvqI+BNy21jOJXP48P5oDV1HFr2I+krVmnPpoSoEagDK87a7n6WpgXSCROPliZiNeHvPjWnpvTFVo7qFLMOk7x6upUmRjoiiG6XP76ibuVuyGQEtCivR8; 4:dvoocPsmboi6MIyhjemFVV74PPTlSOjCu3atktSXE2XlfT4pYVi1pNUtykR9d8L6hkuKQJIa9dNPhAcfwtArxr9RHJRAih+yLcbjsLGFwWHnWZ+NIC7cb3U8x3gHE9ifcy2+aRdTdtjnrVpiVwo73Bg5VXcIZuO2DT3DKcbgbIQWsdfkuakbJTjLjHWMvJWH7ey7YoVGvHEOK1FIzbRJgIVJzk/ozl7J4XiUxeY1/aFpWqLfxvwwmk9Ja4cehuQyzu/W4E57/h2UnDulfJGUeg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:7ADq1rPkmCGQMD/zqYzyNM5VugLcKO/PKLFihDUnsoakzilm7LZoZ/c/SpppNSY17EJVe8xyPOw9UPuQyQJn475u8wl3TNT43CKiyKIC9ZdUmi6fGwnZ6rI9kuc6uZwImecCG0GEyluQPya6TTkuFXxK/9oDkuhg94Vi/3374NQPYxVbZahPZSRJCFT7bSHz60mxh1keTS+kAlF/tb1KDs7VRET7TpfcOKQvHZZYsTm40ODhFIPsG17yhjxhJalrSygsT5SS5w1X/NHUND7cEwA175+OuteI1I7iomODmVFLnjHCC9CJhKfpsKTaiVCdHBc4geyvIQRJg3MiPaxJMOFQXbfbteiWME1azFpecW/ynLGtSxSUiG6rxo2pkdX+sEW2qf9eFh6YPE9/V9YoEJ6z4qv+/ZMox4T6IWKygiXIIa3NFeDOPUaoDopRa9RKRA7xshiY0sS9ZCFmSEI4ClIzQ4soZqktFIYOhRwXln2+yzjs3HIW2oqPYmlxRtpPMt8TuFcF7Y9XpssXx7b50PMvxx4k/Jyb+K4P07grGavU83A5WQnf0EVlaJXTvc/1M0MOO+1lFMg2D2OuZi61tjv98u39MZXTupmyUYGpHmqzIndw/dZvRflM5pcgi/Q7jjKz+O/qIiiWldYHqVgdWK8k/5xI/xDVdG+zwLyEY+ms22eQGfJKuuH26TskMKqtlHquYa+GnlEbJWLmeXKkxWH2PR8/BbNDv42roP7OJ3D746og5UO6eYSn9YDwEu1RM7cBB3RkWgQlsXslTH9bAam/g4mPHl2BMf8D3nZnOp/wAXQbXYFlK7bINj6QliHo1ACbo4FC4S42DWGB17B2yW2vIK7QCUGcQkU7S4/Isi+qeZ0AuD7xPP/22eqb9ExlQ46uHdy4m+/SxmJazyCjiXWnonqv5kBn5SHUI8qJnFyKOAogigiJhKie8CGY1baWBmEKRvIbJcv1+nMKyzLPLHLsiuMjLZ33PGkFVwdE3QCB4SCFLXafY7dCcKolusKcXX/2uJMg9/S/lgYWuCHFRCWlG4imVaJGp5/QQY/GA9k833X2Enj74UYDWNnUZYSP6QO3gFBdrUpVdUms0EtG5tJbKKUD7MxPcztkjWdMqgh3cBrMSR4zDjQhSAOZFOtN9x+HSSaAvU4KjchmH3RlAw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:SDazNS6jpppATTJVSMZahS3odfTUowlkuNT9ZIdaPT3oeUBsJvqej07Vq3wByZUCKr4okhUxFVGpXVBUste9SXsMebs2yHr2Nf0ligJuZl5UBPm6HHRWwcAnI6MeBqnnMLb5Z8AfLf2l0o2aSFKzRIQj0BsVtf6fK0VdNf4NZDg5TnXhQn4TKOuOI23yIghV849mySJx3cDt2IFufEX2j/MiC4KniIWqwsZFxkZIuHbGTab0Vl69xlQXpre2VGDo4jfXVdJmqW7kl2ZGcc6R/mL2jcK6kkHNFc+CRL7kFeU6PkgUqK31swVQRPTEGWAlfXKi59H6VwgAShinwnTGE3G0cjKuu6DOELHEpWwdblw=; 5:264M7Fz8DIZtVKI3m9QHXT6GcOmSM6CvlR/LTdBMFOWdbKHid2FVKto98DkVzgeyHZPue6/5VFHZa8xxSv6I3liz5pJBwQ8miTRPpEkIJuYIUh2b+TuEOtJrxtjZqX+z+83aerliLRaszHQubhZarIvUWpME6lWsdiB0te8kA50=; 24:6I84NtMQ9RFHCNqXbgd7wahOFl1bpbG8fgvbui747YPE/HWOkcNCRacj6S9GFi2tCZpWDcF7iBnACvIqneRqcbGUTzhhdtwhOLZBbVhRx/8=; 7:JDKJaXk5EY8/8EtW5I5tOWC4lcuQwLgJVkgkmcGgq7jLNlj99SB9S7Brb72/S54kAD0XzZtAtLfYwyIm38XDSvDOuSAMHOPBXy9g2EnVe60knKUNOufz38c13U1RFKDjKcxEnMa7Jl+LO1jlb/5/BZIcYdUdiK/vQ4BIomXJlrofo/ZOr5PYlsiWWMxF+VEqYM426BViU9HvoBQk/49re9CET2vqk3hFWSBqBJB/thMhxAjpS9AjGZ1Bu6eawJg9 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:11.5842 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9e64cca5-4dfb-4bad-67ac-08d555bc0318 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add test cases to check that IPv4 and IPv6 react to a netdev being unregistered as expected. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- tools/testing/selftests/net/Makefile | 1 + tools/testing/selftests/net/fib_tests.sh | 146 +++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100755 tools/testing/selftests/net/fib_tests.sh diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index 500c74db746c..d7c30d366935 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -5,6 +5,7 @@ CFLAGS = -Wall -Wl,--no-as-needed -O2 -g CFLAGS += -I../../../../usr/include/ TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh rtnetlink.sh +TEST_PROGS += fib_tests.sh TEST_GEN_FILES = socket TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy TEST_GEN_PROGS = reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh new file mode 100755 index 000000000000..767d2ab2385d --- /dev/null +++ b/tools/testing/selftests/net/fib_tests.sh @@ -0,0 +1,146 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# This test is for checking IPv4 and IPv6 FIB behavior in response to +# different events. + +ret=0 + +check_err() +{ + if [ $ret -eq 0 ]; then + ret=$1 + fi +} + +check_fail() +{ + if [ $1 -eq 0 ]; then + ret=1 + fi +} + +netns_create() +{ + local testns=$1 + + ip netns add $testns + ip netns exec $testns ip link set dev lo up +} + +fib_unreg_unicast_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_err $? + + ip netns exec testns ip link del dev dummy0 + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_fail $? + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: unicast route test" + return 1 + fi + echo "PASS: unicast route test" +} + +fib_unreg_multipath_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip link add dummy1 type dummy + ip netns exec testns ip link set dev dummy1 up + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip address add 192.0.2.1/24 dev dummy1 + ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy1 + + ip netns exec testns ip route add 203.0.113.0/24 \ + nexthop via 198.51.100.2 dev dummy0 \ + nexthop via 192.0.2.2 dev dummy1 + ip netns exec testns ip -6 route add 2001:db8:3::/64 \ + nexthop via 2001:db8:1::2 dev dummy0 \ + nexthop via 2001:db8:2::2 dev dummy1 + + ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null + check_err $? + + ip netns exec testns ip link del dev dummy0 + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null + # In IPv6 we do not flush the entire multipath route. + check_err $? + + ip netns exec testns ip link del dev dummy1 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: multipath route test" + return 1 + fi + echo "PASS: multipath route test" +} + +fib_unreg_test() +{ + echo "Running netdev unregister tests" + + fib_unreg_unicast_test + fib_unreg_multipath_test +} + +fib_test() +{ + fib_unreg_test +} + +if [ "$(id -u)" -ne 0 ];then + echo "SKIP: Need root privileges" + exit 0 +fi + +if [ ! -x "$(command -v ip)" ]; then + echo "SKIP: Could not run test without ip tool" + exit 0 +fi + +ip route help 2>&1 | grep -q fibmatch +if [ $? -ne 0 ]; then + echo "SKIP: iproute2 too old, missing fibmatch" + exit 0 +fi + +fib_test + +exit $ret From patchwork Sun Jan 7 10:45:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856523 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="J2cKLC2I"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8f44jpz9ryr for ; Sun, 7 Jan 2018 21:47:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753649AbeAGKr2 (ORCPT ); Sun, 7 Jan 2018 05:47:28 -0500 Received: from mail-eopbgr00055.outbound.protection.outlook.com ([40.107.0.55]:57455 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753452AbeAGKrW (ORCPT ); Sun, 7 Jan 2018 05:47:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=tUrGTY/4XdbdDmHrJk9fzG05iWfw+wAMx1V/PQz8Db0=; b=J2cKLC2I/1aM9KOdGRWHxdnlLJ9ZsCAGEC2htJd2FxKV9mr3LMbL6auXzrtIJXhSMG5vT+z2S+kvrD5o+MwCO53uQ74zTIm4Wzc1VUWtIrJqicOMyta3gynt0xz07r+cDOfUYQCdr6ExgpOeX+1ISrK8gsiQz/FLenO7Wwg9T9I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:14 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 17/18] selftests: fib_tests: Add test cases for netdev down Date: Sun, 7 Jan 2018 12:45:17 +0200 Message-Id: <20180107104518.31693-18-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 76eead75-6862-43b6-bb8a-08d555bc04ad X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:hivMySnh0lc7YzkRzcVAOepu68vI0z1lNUrx7NnZA2AmpDk1SyHsEEGzhQ49nYVoPKXjAMO+cJmoBZBB5nGv9MPYyJDpMJjTZwQ6BuiIZF0F2pEYfAYjZLufrQfytgNJZouxt8QYbrXXdYUbmUPSGYBp25MsktokoiMpESaknFLy5OknQJlJG8BUSfGh1ZRgoHapB3DgHJ1aUQBrp8sXew8T1/NYXZHb9hJAjdsPlHTF7pvXHpWLlRunh1KtTtnW; 25:sXbsMtNFkyEpM/6LXLQN9sbl8rcoMKR+e4e2bhf2isCJLEDEEG9P1biFgOcFbj79TykJJwdqpStYA5VDGxahq3BnrSfBMviprr7u96kOWtFCLgCn0jScxkcSqMefVPmn10AepaK5glAN7uDEpeitFJS35QJcM0A9uGW1PpGkZ5rIKMwaBCev9ifiz3UZ/KNB2DvFKlsaq/pnQD1GQcUULCm61JoMDH7ieyy65VJprHzyjPHjG+3K5ubvfyD+CcGbacHzxenBGOhaDYnXil0sPasPtIHsGTfHfPhupukmXRixin8wkusvUlQjKztBP2mC4dupdMiwBmmYYT6a/JT2HA==; 31:NMcDwhcXRkrXwJg/v73x4tI/ZgCSpDpx830OLcVleBBWI/C1ViaW6s1G+IuotrJ5pX3NbaYjRqtjmIVMujPMcoxYI6Q4gBF22pfWsK1XJpb3t4wKSnCWEVH2FiaSZok5MZEOpWBIfTvRJwjLEIjkqzMasoPpZbBxRDq+K0B2cR6FKKK3HSrm8z9vyU4d9bEbj4/LuId9KfQFVZXJAlrD5EZl3I1hT/dZE89Nu/X6y9w= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:LiMs9HdFASDSqck31i//Vt36l/QZQXnX3vTyRnWGMJ/XLpa9ywNVQYGQApwZhUq+vDBGmwxvUC9bjeIwetNv+loL+07ac6q2GM1YOfnTOpYP/kcJiEDfoepSNyxdfrIgdTDcrAm4E2vB/pIWIoNuGZ4JL0p7RAZvEQGIn6Skof/E/GMtTGwLsw5DdqOPUc2U1RJnFHW0L5M9JF3FwgE3tVmo9OrLlNbdE2jL9MmKEtTfchZHMPZ+QknhIIITWsTdLgCNgSNnCphzbDLtSsLqviIzdglq5naoADzw87h3tX9aNH+b4Hg+H62jruYJNziG/eVDLanTUZm/Z9vKkQZs6nICbv7u5Pd3dEfX9dMm36I5W69LtDNJs+/7+uwXIRbjVi3W10LIypmO7S+Pq4rW/+2TyPV9FZrmOQLLc6MHfpFjENztBXwZZflUCxiWy+QcWNPHOj+tm0D+TH7c9nmdzG/DeH6FJqiLS2JpPW7Y+iEByy5zj+xHcaMqiUNgeyVP; 4:U831g2qiW5R//IPTLvvcRFB0PveAeDLoXoJiJWoZbcaeRA5c9HpoDDkmqSvfnTRUFVMhJEDKT0qgDC+lkdwtq6wu991vq+CG8hyjpN0SS8o0s/2oIlnRJrSCIs04wTGE2fmB6OSla9ls4ASjZRnoDxhczs0lyfVMpjKe2T9768KJixBnsE23ORK4wuZ/NXEfgcW0rBM1NlGk+tUENaOuBfA1aZ1XcwdWdq9rTiXx8xGO5i5gEebgeZbF0MDN+Dr7jz/Sv3DKH/xkBQmQ+lzjPg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:NGHnBfPvt7tE+P9HOP4b+jBlh3yxD6Mcg5DtFZUjk8/bH4V1ASIqmbGWyqfg/DM34VBzWt0I7LI7MHH+jLKD8yOzLsA2XnsSagtBeU8Ae8OnOLsukvQYy9aWwtAl7uDPgCOd/R+SpfGFW3keIwBPbc2htWfjeYQDGLciry4QsvLrmTRRJPOUby8veEZ2nd7QW8Yj7gRT5ptHDpOav2vFWo95xG+xRTf4RwrwHibPevLk+6DXtE97x49UALDfEZ/ilTQ8zV2l54OEyI0fbD4Nlbts+srMx2DTZxpcQK0lPbBuooDEl5JVrC9u8wHVRJuSnfaRuuooFtmnT7esBt0LUjsIscKirPc+Uacx1fFKMJdWhscCyZ3bZoiw2xWgmL+fufhocWk/bmz1XjqE7pY+cyc9N5w3JRj3OEY00l+0IizrHjufdw9rji89/f7a/sRi5pHBv/8GC4KNehp9cu+KvRe+vve6HRrjzWOZgkN0hRSh833RdNL9opvtjT2HVAmsqYANSO6r+CfetS/luhsxGhFd03LJTAiNIUgWt8ltq/apHhqBQ2HIzx3BX1a7EnrVAFoelcb5fB796WaElXlrcFeQTBdX6NzaEGkse20o3WmVFBbzGCHTtXYlBtphMP5bcsMIYX3KFkJSFpn+9I75zTuYtnH0RLLwTxBg6OJXpjwcgQoKFtMfu5VnRHYaj2800dmbzm5CNPMDlJ0LsTSPgJ5HKHI+Id2x9LWrFRhi4zh+s93bRvxJRW9mIQK7bOhXidvneLnDrQdVwRj0mq2CEMIlJfAS5JAUCnSMK97CA6dWOodnRIs4QkQiMAvHMfEv/QPjAi+LWzZdQmycDENxvoHKxtt7sR3R+9bxA2KxGPJqk0uiK+B/ahQtUTdS+PgT9NsEHLH92b2QIehduylqwKGMo6bbVgFN4aXcEDkhLRSc+ZvORP/jHHzgF+HbsG8prDKg8P251AN9kYSXwQkiTN4X4akvmlBTmGsM59sTNWs4Mrjk+t53+VyF+aYn5r3mmw3At7ELYurunbAT+C0lGUSObySKiHk8KwSSDe/DbGVT4sRQ9iELudki39X/bGxV7LBC89CeGebpDlOnXfemSMnjE2SXsU3CQEJz3fTYFeZW6rioHMMjpSemL4wgtmpB82MtD+0vBflenLJBqokjJA== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:k7J86C/ahiLGeFx0329Ip62ntAvWcXpX/V5xwir6Nb73JMERa5EMGbxztV4PdM16isabQdesPAnfF1aMTSDvUgEAM++PA8O1vTrt6C+ZqyICHK8SfiunqiaBpkD7Jcgxsj1f9rgwbImIAbyFORTz5s8dA2ez8wMs/TdcnuH1RIZ09JXmSNjSV9SAsJZqhYjJH46JvlWlv/RcQgvw0qZJIXkUEpDgJ/46i/svP8B9CBbYqJ9mZSEufl6bujdV8mX8PUzWfbPfLCnd2yhA2JoPqw3IhhFr7u0W7Hfs5oekfGelrkFn738+yB9DtEPkBJrP4CnCcpWFtknQP3bQ+TQbFRBhYYiAycFABoI7NT6d3LA=; 5:cpoMwMXnClH7luhxg/jQgc16jHk/JKzoZ7ZnUTklid4hVuEWiL76W+we0KXiZ4FAyszCdsanwEy/i9SuvvM9vWFBbljjNSmpxS7O2EujBLmxNgQhqmq3fjWlScbSoPDIAwA0J+2pYaV3Zugqb81Adyoe5q48eNJcsmklKaII/ds=; 24:ZzNWqLGjuMwW1aAyFAiSgs+xlKM2wrPF/UOiBikPlY9BRpw+7qJlU+nHvqSqqUjQUfTnxlNCGjzgasqTrIGcaPG7YNEJZhR4Yof0WzWxj7A=; 7:HEaez5xSvgZHjGRYtOFhQoM+jNXXXzlLog2SMbOERX6Z/RHa/7k2WAC9Sze5EmnGzkmZEtxreB2rZ11yiigMQwJJdKL65wKmI1qHwDX+vW7iZsn1k5Vv83TeLsQVaWtr/W6iSwDMlE/+4NOt14L2i/lyZTRFePH0HjK3NYiBMHjHtUDaa0hsnPH2s4x6hzp1eFUs0KKLfZ1xgyZ2n3JKtwN5U7aSXXIa39PyPHx5VkLt9BURpzIT382w0CkBD4W6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:14.0999 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76eead75-6862-43b6-bb8a-08d555bc04ad X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Check that IPv4 and IPv6 react the same when a netdev is being put administratively down. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- tools/testing/selftests/net/fib_tests.sh | 141 +++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh index 767d2ab2385d..25ba74f8a37e 100755 --- a/tools/testing/selftests/net/fib_tests.sh +++ b/tools/testing/selftests/net/fib_tests.sh @@ -120,9 +120,150 @@ fib_unreg_test() fib_unreg_multipath_test } +fib_down_unicast_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_err $? + + ip netns exec testns ip link set dev dummy0 down + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_fail $? + + ip netns exec testns ip link del dev dummy0 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: unicast route test" + return 1 + fi + echo "PASS: unicast route test" +} + +fib_down_multipath_test_do() +{ + local down_dev=$1 + local up_dev=$2 + + ip netns exec testns ip route get fibmatch 203.0.113.1 \ + oif $down_dev &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \ + oif $down_dev &> /dev/null + check_fail $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 \ + oif $up_dev &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \ + oif $up_dev &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 | \ + grep $down_dev | grep -q "dead linkdown" + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \ + grep $down_dev | grep -q "dead linkdown" + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 | \ + grep $up_dev | grep -q "dead linkdown" + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \ + grep $up_dev | grep -q "dead linkdown" + check_fail $? +} + +fib_down_multipath_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip link add dummy1 type dummy + ip netns exec testns ip link set dev dummy1 up + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip address add 192.0.2.1/24 dev dummy1 + ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy1 + + ip netns exec testns ip route add 203.0.113.0/24 \ + nexthop via 198.51.100.2 dev dummy0 \ + nexthop via 192.0.2.2 dev dummy1 + ip netns exec testns ip -6 route add 2001:db8:3::/64 \ + nexthop via 2001:db8:1::2 dev dummy0 \ + nexthop via 2001:db8:2::2 dev dummy1 + + ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null + check_err $? + + ip netns exec testns ip link set dev dummy0 down + check_err $? + + fib_down_multipath_test_do "dummy0" "dummy1" + + ip netns exec testns ip link set dev dummy0 up + check_err $? + ip netns exec testns ip link set dev dummy1 down + check_err $? + + fib_down_multipath_test_do "dummy1" "dummy0" + + ip netns exec testns ip link set dev dummy0 down + check_err $? + + ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null + check_fail $? + + ip netns exec testns ip link del dev dummy1 + ip netns exec testns ip link del dev dummy0 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: multipath route test" + return 1 + fi + echo "PASS: multipath route test" +} + +fib_down_test() +{ + echo "Running netdev down tests" + + fib_down_unicast_test + fib_down_multipath_test +} + fib_test() { fib_unreg_test + fib_down_test } if [ "$(id -u)" -ne 0 ];then From patchwork Sun Jan 7 10:45:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 856524 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="YDAWPSzz"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zDw8m27Bbz9ryr for ; Sun, 7 Jan 2018 21:47:36 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753666AbeAGKre (ORCPT ); Sun, 7 Jan 2018 05:47:34 -0500 Received: from mail-eopbgr00055.outbound.protection.outlook.com ([40.107.0.55]:57455 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753607AbeAGKr0 (ORCPT ); Sun, 7 Jan 2018 05:47:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=m82QvfJuAsSslja/0KR4MXR5fLB6x8dbqTNu7FvndqE=; b=YDAWPSzz9uIu7KqZJ2JWXo2xf1J1XlqymhCygCsQdwfYZeryG2wpRZ0rcU3VD4I5z6QpgwXchoL8D2plfprtO5gqTq44J/gzZB4EDwWN5MlQujcUXYUX+ca3pERahCV/o1AumpWb7k1ncMpJybCPmUYIQNqh4oc9Fv/85tpDq0w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (79.177.48.236) by HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Sun, 7 Jan 2018 10:47:16 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, dsahern@gmail.com, roopa@cumulusnetworks.com, nicolas.dichtel@6wind.com, weiwan@google.com, kafai@fb.com, yoshfuji@linux-ipv6.org, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 18/18] selftests: fib_tests: Add test cases for netdev carrier change Date: Sun, 7 Jan 2018 12:45:18 +0200 Message-Id: <20180107104518.31693-19-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180107104518.31693-1-idosch@mellanox.com> References: <20180107104518.31693-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.48.236] X-ClientProxiedBy: VI1PR0701CA0039.eurprd07.prod.outlook.com (2603:10a6:800:90::25) To HE1PR0501MB2012.eurprd05.prod.outlook.com (2603:10a6:3:35::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: fefbd2bc-9090-4400-c12a-08d555bc0634 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0501MB2012; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 3:mWnH472WxXeX36VWDKtG+DH/hreWGGgnbe5lsyDvjXFJea7Oqvp8PAANM3zXfflxM9yu7AWLOp6h+Ox/OK9VACPn32AQKUeDdoPflO2nz8Ij1gbHL53zKcMDiqTZyNa77gDhtAHiBhuS21oncZmERvRNdqd635v3jJ824aEEJwPfm/pz2g8YqY6+4lNO+jN1syVLMMezNfCPwtFm8h941fPpBIAGW9z3vMq+wTfV0/W/WQFs0HsQqI6aL/qQy41j; 25:R5YArpb926Is+XrZGm24DUjYpSIbbXspi/PQnsP12/+OUDCurYvUZWNd6Vy8kHSyCYLfem49F/60PQAlgfGayZrOT1ZslH2jwfn0xlM1OcXofm4v0Iz/zcp1YWkQIHRsz/p+A+EJsAHr+J3is6i89DG2i5KNKKZIGwRwJ+2rGC6EsSwr19Guq7X67xR1dR99E+a/noqrDgPuZNtEetHY4Khr7O68M3YPfc62vJO32gHSf80mZSJzG7L4gw9g5dzVVZ8/DK3dwcP63ec5LyTeS/R/D8put6vUnWtRgRa6bBizTleixDNwidImfTtpghakrl19EOep8eO9Sa+o+V56TA==; 31:gfER/oG6bSK7z5NWnYM6vwYlIZlMUScoc3zXYZ3Usm3LWHrBvPdWrXvnL23pFNQfTvYdPK0X3ceQ3KMMnm5IE0ySAtAEU8fHybzBJtQY4caBNGn0W/lO00ZBlJxqQK1A4y1Fdg8cRwB83n6c9D8EJ1R4uDgZLmMnkc+EskPHabqHcx6W2qe0hY7Cr5sRYfEz17w92oDMeK1KK23SN7tJZi1NCcoazOC14ZoCUv0iEqA= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2012: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 20:fPmk3cHSAWhr/2HozH6L/sZnbnoUOxMggziPNHlutJLRHuaqx4gzjVuPJIgqOsP6UMFJIV5RoRiyBpv0WG665TWHb5zGGM9rgGoPh28CgVbN+eMcLPGB7x6q1l3mUt+c4b1glGdPBCnw6qw+1YMrPe66IXD11qQ3d6qJEZidnSN8s7KAp+X4EOzevKcrCKrWim2FdclbwH5TBm+0nCS1CM6iJDHN5oqJiGDM8FW5ZVreI7sR+yKC+wNnGniDG/dhSEvrgkVyLvnL6jlo1Spcarz2hMtGg/NZl0kZMJNSrXe6rEsfZeuoylV3Bx95OOEyHD5Xy1FOGJ8EVVYBvqPIXuNNHMUyt3w6jQkjZ18H1qFczYnkJho/ve0jBmCp5/gbxEv1kOKaH2m0eIsYlJdUnMYJtxT67yw3wqrC/tFwAS5GQUI2Zw85jj4gf82m1aY+5oVOxYM+y67w5j5TQaFqnzXEShVOrvF2NKphpALyLTBkTWgXIq66vkuzEh4BFo35; 4:ztZJmioH+wefULbvW3UZ/eBJvEgCEau7Inw/psPW1GOQgW3MjFdwNig06SFL25OfzYm7PiKbGuCk21x+ZNLvZ3HCQTv0N6a45d3Vtdp/KLOya65hQ4h6621UaCPXS2vEYVnYpYruAIskgYz6YQ1goy3MsVW5hdRvulSDZm5mjDqPcypCbjLlNrO1Ke8grralNKYeE4YLysWZfco5ftaaAMXxUSyONH1MJiIiZ+r9RK9BsorLk9v1nXYlawg8+ZsmNE0V0HY+Ge8rdVQ8qViW9g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:HE1PR0501MB2012; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0501MB2012; X-Forefront-PRVS: 0545EFAC9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(107886003)(106356001)(76176011)(51416003)(50466002)(86362001)(16586007)(4326008)(8936002)(68736007)(105586002)(81166006)(1076002)(81156014)(2361001)(47776003)(6486002)(6506007)(50226002)(386003)(6512007)(66066001)(16526018)(8676002)(2351001)(5660300001)(53936002)(7736002)(36756003)(2950100002)(6916009)(305945005)(97736004)(478600001)(2906002)(6116002)(52116002)(48376002)(25786009)(3846002)(316002)(53416004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2012; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 23:SM0t/znQ+wYrbFTBnqkHBd7I75iEuGN4XyLeH3nuoLkpX5eT9HnQtkQNJan4WFgjos3ot0hD7XVX6VpxIdREPlCHcbd9nLABuKsJRSPiIhuBN5m06ynGfYniHNV0Mk5iqW74xLEJhts8b4DT/gH9P9UzIZhEemAgIjKK6vP4LhXX151YziwHNZp6XSWE5eN+h9jt9x5EVBxG14Rl2r0f70VqAoimFwL+ktsZA2xTmdXktl6jWc319rB2/gzL35obDJWAqaFc8TDIxQFgqx2FNl+kjYYHdeAjazLh/83A5GEuXix4fiCjHMyoQoMgOGOwUOkrHPx+CjLZPJ/QymYunUY4Vo7unHHbrVzt5Eq6EuBt4pU0Zcm+NG4ITyT0nBiQq9bSt7dt5oMMln65GbBsQMGkRQ/WnoL6Y6iSX3Y+NO0AryU7LAb2XZs/qjHww4taXnuBOHkW7pdWgjmReyQSPkGFpNcXYX7EiwgYC8kjBDe/BpvNS4gltXeHUfa9s+zF/2lR4+8VlSB0FXjuiQKLU9RLdfiOQudVzYUWv7iANOLqzt+u+uxskr8W4ReB0OmAlPbwqDRH90Fn/N3JCQL/d2cJ4eKLaljeLXrbzEuDpVJIhcOlbulwkz6lw2+McaFIkMhoseHYeugBMbqajy990DqfXPPsVKbvwURN1E58WGwbTQcsRL0JQ2ROUvZrAt2ud4IxSMQ4huNeuhsYP0WGHFgqYRn61qlSqIHXoiEItpvVsNcbh742nrlmvWrfHYUAGNfDwmxsApDgPXKuUrhm+VaI7/G5EvyUAe8xz59AaxBmvdbrniWK3fnCeHOZNoG4CLzZqiTYMP71VPlNGup0Ki5rnykmne3JlgnAMEwijh1zYrN/vO+t5xhJlPzVm0vOrfb33fNhzsMLM5okC6pQQmoEj7Zya/KRPRZ8zmCx5aa/IGCzgN90XHW56uk2dfjg3esPqKlc8H5MztQCyOKBMk3D5TDK7PjQsseHnVi3w6IyScWHFHeVo4YC9Z7Tu1doYYBTt2g02ShWEcVquarHakdAIKEsxOn2RTS4XfenDKtAObnDjcor7RTkPa9Qb1Haqu+8qtf8sm5Bf0OhrA2Ml2ezfvh2FxERPgtKCRbxuQh2KMTjlDGokzhp0DrHOAnfi/chpVMBez9pFHTE/93oFg== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2012; 6:1MABYQAF9HE8E0Ku4FT+Y39bfpiMYKn3IwWCsrE68oLw2UyJDS7UJUgxJS54VZbDGMxP7BbpEsTA0oqsulwr3tgquGRYmFb4+XgON/fhG0apybgE5F326+PRJA8fL1Uz90kSXh5J6aTYhG/0r0/LzFhVMo/BioPmrybiLS3WxFQbdjClLvfhiA+t9YuALgklEukhUurJYaZgf+LJxN/m2l1sEu8FN8hu0Cr/4wM0evZGk7V1os48mydHXG8JreDwTlV/GjVHo6n6J8gjkM0QcFyU5ISmdZtw9lqAw3tqbtmNp0g8SfGW4uk434vsmBhD5sAKUHGIkRXa7yzc/9Ra0dewRXXPxIXn2BYr5u0fpIA=; 5:SpaGjhwTTX7qQhUaLQdpRyT9W2dGTGL3f/MWGaoeh4kGTG5fG4nZzgi3FPv+hBJNeXQKVbeuuXUKPOUvpDXFE6mOioJdUI1tX5scC4VLYc0hXB4wAAgYCTMoHdGBoTMNZA+WTBgTLaqkm/K/5hF9l6pHPY0AOXFWGGQHNTsg5vQ=; 24:YUxVoeuwb1j+AsuGJpG0yD5d1OHYO5GzR34w2HK8QlircKxwfEqZMbCofIf2T5izP+coRBtEDYdy6XLiOBNRkK1BpxJudwOVM5s7Iz5ZaZw=; 7:WXrezfAHPMt84rOweHJpmdhPJUfefLJoFmHz2894Cb1Uj9wMlip/MLxQnCs4/oPps7vK/h8cIA6V7Yumk7w6rFY/XaeBVolkl8Bc/Zulw6dmCw2SC6VAxVC0TGvzSRkpWYnCn4IwLZzlmXri7OQWf8MzVG7QZjcXqiJm+usV6kz9b0JC1513JHTBrZmNh05UIidxWKGR1Ha9OV80O0h/pHZUKlqcMz1tYZN5hgSQGh4CnG29+vZgL9NeFQ2YiAVm SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2018 10:47:16.8188 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fefbd2bc-9090-4400-c12a-08d555bc0634 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2012 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Check that IPv4 and IPv6 react the same when the carrier of a netdev is toggled. Local routes should not be affected by this, whereas unicast routes should. Signed-off-by: Ido Schimmel Acked-by: David Ahern --- tools/testing/selftests/net/fib_tests.sh | 142 +++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh index 25ba74f8a37e..a9154eefb2e2 100755 --- a/tools/testing/selftests/net/fib_tests.sh +++ b/tools/testing/selftests/net/fib_tests.sh @@ -260,10 +260,152 @@ fib_down_test() fib_down_multipath_test } +fib_carrier_local_test() +{ + ret=0 + + # Local routes should not be affected when carrier changes. + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip link set dev dummy0 carrier on + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 198.51.100.1 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.1 | \ + grep -q "linkdown" + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 | \ + grep -q "linkdown" + check_fail $? + + ip netns exec testns ip link set dev dummy0 carrier off + + ip netns exec testns ip route get fibmatch 198.51.100.1 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.1 | \ + grep -q "linkdown" + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 | \ + grep -q "linkdown" + check_fail $? + + ip netns exec testns ip address add 192.0.2.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 192.0.2.1 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:2::1 &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 192.0.2.1 | \ + grep -q "linkdown" + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:2::1 | \ + grep -q "linkdown" + check_fail $? + + ip netns exec testns ip link del dev dummy0 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: local route carrier test" + return 1 + fi + echo "PASS: local route carrier test" +} + +fib_carrier_unicast_test() +{ + ret=0 + + netns_create "testns" + + ip netns exec testns ip link add dummy0 type dummy + ip netns exec testns ip link set dev dummy0 up + + ip netns exec testns ip link set dev dummy0 carrier on + + ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.2 | \ + grep -q "linkdown" + check_fail $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 | \ + grep -q "linkdown" + check_fail $? + + ip netns exec testns ip link set dev dummy0 carrier off + + ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 198.51.100.2 | \ + grep -q "linkdown" + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 | \ + grep -q "linkdown" + check_err $? + + ip netns exec testns ip address add 192.0.2.1/24 dev dummy0 + ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy0 + + ip netns exec testns ip route get fibmatch 192.0.2.2 &> /dev/null + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:2::2 &> /dev/null + check_err $? + + ip netns exec testns ip route get fibmatch 192.0.2.2 | \ + grep -q "linkdown" + check_err $? + ip netns exec testns ip -6 route get fibmatch 2001:db8:2::2 | \ + grep -q "linkdown" + check_err $? + + ip netns exec testns ip link del dev dummy0 + + ip netns del testns + + if [ $ret -ne 0 ]; then + echo "FAIL: unicast route carrier test" + return 1 + fi + echo "PASS: unicast route carrier test" +} + +fib_carrier_test() +{ + echo "Running netdev carrier change tests" + + fib_carrier_local_test + fib_carrier_unicast_test +} + fib_test() { fib_unreg_test fib_down_test + fib_carrier_test } if [ "$(id -u)" -ne 0 ];then