]> git.puffer.fish Git - mirror/frr.git/commit
zebra: Ensure gr events run after Meta Queue has run 13145/head
authorDonald Sharp <sharpd@nvidia.com>
Wed, 29 Mar 2023 19:27:09 +0000 (15:27 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Thu, 30 Mar 2023 00:25:51 +0000 (20:25 -0400)
commit81322b96b0b1b31a89ce8e292814ed13c2cee9eb
treedb0a2c92f396ca34ab6df15ad8bbffaa93c92fba
parent644a8d3560100cb56df34e5da7ad5d1072ad7106
zebra: Ensure gr events run after Meta Queue has run

BGP signals to zebra that a afi has converged immediately
after it has finished processing all routes for a given
afi/safi.  This generates events in zebra in this order

a) Routes received from BGP, placed on early-rib Meta-Q
b) Signal GR for the afi.

Now imagine that zebra reads GR code and immediately
processes routes that are in the actual rib and
removes some routes.  This generates a

c) route deletion to the kernel for some number of
routes that may be in the the early-rib Meta-Q
d) Process the Meta-Q, and re-install the routes

This is undesirable behavior in zebra.  In that
while we may end up in a correct state, there
will be a blip for some number of routes that
happen to be in the early rib Meta-Q.

Modify the GR code to have it's own processing
entry at the end of the Meta-Q.  This will
allow all routes to be processed and ready
for handling by the Graceful Restart code.

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