On Tue, Jun 11, 2019 at 12:47:58AM +0200, Stefano Brivio wrote: > On Mon, 10 Jun 2019 23:53:15 +0200 > Stefano Brivio <sbri...@redhat.com> wrote: > > > On Mon, 10 Jun 2019 15:38:06 -0600 > > David Ahern <dsah...@gmail.com> wrote: > > > > > in dot releases of stable trees, I think it would be better to converge > > > on consistent behavior between v4 and v6. By that I mean without the > > > CLONED flag, no exceptions are returned (default FIB dump). With the > > > CLONED flag only exceptions are returned. > > > > Again, this needs a change in iproute2, because RTM_F_CLONED is *not* > > passed on 'flush'. And sure, let's *also* do that, but not everybody > > runs recent versions of iproute2. > > One thing that sounds a bit more acceptable to me is: > > - dump (in IPv4 and IPv6): > - regular routes only, if !RTM_F_CLONED and NLM_F_MATCH > - exceptions only, if RTM_F_CLONED and NLM_F_MATCH That seems reasonable since DavidAhern pointed out iproute2 already has #define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH)
> - everything if !NLM_F_MATCH I am not sure how may the kernel change looks like. At least I don't see the current ipv6/route.c or ipv6/ip6_fib.c is handling nlmsg_flags. I would defer to DavidAhern for comment. > > - fix iproute2 so that RTM_F_CLONED is passed on 'flush cache', or I would just pass RTM_F_CLONED with NLM_F_DUMP. > don't pass NLM_F_MATCH in that case > > this way, the kernel respects the intended semantics of flags, and we > fix a bug in iproute2 (that was always present). > > I think it's not ideal, because the kernel unexpectedly changed the > behaviour and we're not guaranteeing that older iproute2 works. The > fact it was broken for two years is probably a partial excuse for this, > though. > > What do you think? I'll prepare a v4 for net-next if we all agree. > > I'm not entirely sure which trees I should target. I guess this > introduces a feature in the kernel, so net-next, and fixes a bug in > iproute2, so iproute2.git? > > -- > Stefano