Hi Ondrej, On Tue, Jan 31, 2023 at 06:35:27PM +0100, Ondrej Zajicek wrote: > There are some corner cases where the behavior may be different - e.g., > if one has Babel and BGP with add-path enabled connected to one table, > then all Babel routes would be propagated with BGP. Or if you have a pipe > to another table that would filter best route but not others, then > protocols in other table will use non-best route. But these are rather > artificial cases > > One can of worms would be ECMP. On one side, we get (local) ECMP for > almost no additional work (with kernel 'merge paths' option), on the > other side,
Right, I hadn't even considered that. Nice. > we could not create regular ECMP routes (one route with multiple next > hops) like it is done in OSPF and RIP. Hmm, that might actually be enough of a reason for keeping the internal route selection. I'll have to think about that. I'd like to have the option to only have the best route be a multi-NH one but still have all the non-best routes exported too. > > Couple of comments on the code below: > > > > > Changes in v3: > > > - Subsume FIB_RESTART v2 patch: instead of restarting FIB iteration > > > we keep lists of actions to perform after FIB iteration is finished. > > Could this be a part of separate patch, applied after the primary change? > Doing it together rather complicates reviewing these changes, and there > may be different considerations for both changes. I merged them quite on purpose because the changes in the main patch allowed making the code in expire_routes significantly less hairy. If indeed FIB_ITERATE_START resumes from the last position (I haven't convinced myself that this is true yet) then all this can be dropped anyway. --Daniel