mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-01 18:24:23 +08:00
Merge branch 'nexthop-blackhole'
Ido Schimmel says: ==================== nexthop: Do not flush blackhole nexthops when loopback goes down Patch #1 prevents blackhole nexthops from being flushed when the loopback device goes down given that as far as user space is concerned, these nexthops do not have a nexthop device. Patch #2 adds a test case. There are no regressions in fib_nexthops.sh with this change: # ./fib_nexthops.sh ... Tests passed: 165 Tests failed: 0 ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
87e5e09427
@ -1399,7 +1399,7 @@ out:
|
||||
|
||||
/* rtnl */
|
||||
/* remove all nexthops tied to a device being deleted */
|
||||
static void nexthop_flush_dev(struct net_device *dev)
|
||||
static void nexthop_flush_dev(struct net_device *dev, unsigned long event)
|
||||
{
|
||||
unsigned int hash = nh_dev_hashfn(dev->ifindex);
|
||||
struct net *net = dev_net(dev);
|
||||
@ -1411,6 +1411,10 @@ static void nexthop_flush_dev(struct net_device *dev)
|
||||
if (nhi->fib_nhc.nhc_dev != dev)
|
||||
continue;
|
||||
|
||||
if (nhi->reject_nh &&
|
||||
(event == NETDEV_DOWN || event == NETDEV_CHANGE))
|
||||
continue;
|
||||
|
||||
remove_nexthop(net, nhi->nh_parent, NULL);
|
||||
}
|
||||
}
|
||||
@ -2189,11 +2193,11 @@ static int nh_netdev_event(struct notifier_block *this,
|
||||
switch (event) {
|
||||
case NETDEV_DOWN:
|
||||
case NETDEV_UNREGISTER:
|
||||
nexthop_flush_dev(dev);
|
||||
nexthop_flush_dev(dev, event);
|
||||
break;
|
||||
case NETDEV_CHANGE:
|
||||
if (!(dev_get_flags(dev) & (IFF_RUNNING | IFF_LOWER_UP)))
|
||||
nexthop_flush_dev(dev);
|
||||
nexthop_flush_dev(dev, event);
|
||||
break;
|
||||
case NETDEV_CHANGEMTU:
|
||||
info_ext = ptr;
|
||||
|
@ -1524,6 +1524,14 @@ basic()
|
||||
run_cmd "$IP nexthop replace id 2 blackhole dev veth1"
|
||||
log_test $? 2 "Blackhole nexthop with other attributes"
|
||||
|
||||
# blackhole nexthop should not be affected by the state of the loopback
|
||||
# device
|
||||
run_cmd "$IP link set dev lo down"
|
||||
check_nexthop "id 2" "id 2 blackhole"
|
||||
log_test $? 0 "Blackhole nexthop with loopback device down"
|
||||
|
||||
run_cmd "$IP link set dev lo up"
|
||||
|
||||
#
|
||||
# groups
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user