From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: [PATCH net-next 2/3] net: ipv4: flush neighbor entries when carrier is off Date: Sun, 5 Nov 2017 22:57:52 -0800 Message-ID: <1509951473-25990-3-git-send-email-dsahern@gmail.com> References: <1509951473-25990-1-git-send-email-dsahern@gmail.com> Cc: jhs@mojatatu.com, David Ahern , Satish Ashok To: netdev@vger.kernel.org Return-path: Received: from mail-pg0-f68.google.com ([74.125.83.68]:51952 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751100AbdKFG6E (ORCPT ); Mon, 6 Nov 2017 01:58:04 -0500 Received: by mail-pg0-f68.google.com with SMTP id p9so7497015pgc.8 for ; Sun, 05 Nov 2017 22:58:04 -0800 (PST) In-Reply-To: <1509951473-25990-1-git-send-email-dsahern@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: Commit a6db4494d218c ("net: ipv4: Consider failed nexthops in multipath routes") added support for checking neighbor state when selecting a path for multipath route lookups. It works but incurs a delay waiting for the neighbor entry to timeout. Improve the path selection by flushing non-permanent neighbor entries when carrier is off. Signed-off-by: Satish Ashok Signed-off-by: David Ahern --- net/ipv4/fib_frontend.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index f02819134ba2..aa8fea74858f 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -1226,10 +1226,13 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo break; case NETDEV_CHANGE: flags = dev_get_flags(dev); - if (flags & (IFF_RUNNING | IFF_LOWER_UP)) + if (flags & (IFF_RUNNING | IFF_LOWER_UP)) { fib_sync_up(dev, RTNH_F_LINKDOWN); - else + } else { fib_sync_down_dev(dev, event, false); + if (IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN(in_dev)) + neigh_carrier_down(&arp_tbl, dev); + } /* fall through */ case NETDEV_CHANGEMTU: rt_cache_flush(net); -- 2.1.4