On Tue, Jan 02, 2018 at 10:38:19AM -0700, David Ahern wrote: > On 12/31/17 9:15 AM, Ido Schimmel wrote: > > @@ -3550,13 +3581,21 @@ static int fib6_ifdown(struct rt6_info *rt, void > > *p_arg) > > } > > return -2; > > case NETDEV_DOWN: > > - if (rt->dst.dev != dev) > > - break; > > - 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 | RTNH_F_LINKDOWN); > > - break; > > + if (!rt->rt6i_nsiblings) > > + return rt->dst.dev == dev ? -1 : 0; > > + if (rt6_multipath_uses_dev(rt, dev)) { > > + if (rt->rt6i_nsiblings + 1 == > > + rt6_multipath_dead_count(rt, dev)) { > > I'd prefer a tmp variable to make that line more readable and still > within the 80 column guideline. > unsigned int count; > > count = rt6_multipath_dead_count(rt, dev); > if (rt->rt6i_nsiblings + 1 == count) {
OK, will change. Thanks! > > > > + 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;