]> git.puffer.fish Git - mirror/frr.git/commit
zebra: Make connected routes their own entry on the meta_q
authorDonald Sharp <sharpd@nvidia.com>
Thu, 1 Oct 2020 18:58:37 +0000 (14:58 -0400)
committerIgor Ryzhov <iryzhov@nfware.com>
Wed, 7 Oct 2020 08:01:16 +0000 (11:01 +0300)
commit56724b7fb989c990cbbab9ccabd96d02b0e43f85
tree2d62e05bd60a17b6782fd3425cb05bcff818ad6e
parentc534e81d2cf3052d0959f19a602f3eca53b38fb4
zebra: Make connected routes their own entry on the meta_q

During quick ifdown / ifup events from the linux kernel there
exists a situation where a prefix that has both a kernel route
and a static route can queued up on the meta-q.  If the static
route happens to point at a connected route for nexthop resolution
and we receive a series of quick up/down events *after* the
static route and kernel route are queued up for rib reprocessing.
Since the static route and kernel route are queued on meta-q 1
and the connected route is also on meta-q 1 there exists a situation
where the connected route will be resolved after the static route
fails to resolve, leaving the static route in a unresolved state.

Add a new queue level and put connected routes on their own level,
since they are the fundamental building blocks of pretty much
all the other routes.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra/rib.h
zebra/zebra_rib.c