On Wed, 12 Aug 2015 16:14:33 +0800 Zang MingJie <zealot0...@gmail.com> wrote:
> On Wed, Aug 12, 2015 at 4:52 AM, Alexander Duyck > <alexander.du...@gmail.com> wrote: > > On 08/10/2015 04:50 AM, Hannes Frederic Sowa wrote: > >> > >> Hello, > >> > >> Zang MingJie <zealot0...@gmail.com> writes: > >> > >>> Here comes several options: > >>> > >>> 1. reject local next hop w/ EINVAL > >>> 2. delete route when local next hop removed > >> > >> Will also cause some people to complain. > >> > >>> 3. transition between RT_SCOPE_HOST amd RT_SCOPE_LINK > >> > >> I don't understand the scope transition. I know Alex mentioned it for > >> the first time. Maybe he can explain? > > > > > > If I am not mistaken part of the issue in terms of the behaviour being seen > > is due to the fact that the nexthop scope is recorded only when the route is > > added, and there is code in place in rt_set_nexthop which will only use the > > gateway if the scope is RT_SCOPE_LINK. So what we would probably need to do > > is go through and audit any routes on a given interface every time an > > address is added or removed and if the nh_gw is equal to the address added > > or removed would would need to transition between RT_SCOPE_LINK and > > RT_SCOPE_HOST since the gateway is transitioning between the local system > > and somewhere on the other side of the link. > > > > The problem is that this would still be a behaviour change and there may be > > somebody that has heartburn about it. > > That's why I'm going to introduce a sysconf entry, with the entry > unset, keep compatibility; with the entry set, fix the bug. > > > > >>> 4. document it > >> > >> I prefer that one :) > > > > > > Yeah, me too. The fact is things have worked this way up until now and I > > suspect the reason why this hasn't been reported until now is simply because > > in many cases it works since routes are usually updated if you are moving > > the gateway onto the local system. Most people doing any router use routing protocols suites like Quagga or Bird which have a routing management daemon. This is the kind of change that the routing services portion manages. When a route or interface change is detected it updates the FIB based on the bigger RIB. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html