]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Do not retry in 30 seconds on pw reachability failure 17009/head
authorDonald Sharp <sharpd@nvidia.com>
Fri, 4 Oct 2024 13:51:46 +0000 (09:51 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Tue, 8 Oct 2024 00:36:45 +0000 (20:36 -0400)
Currently the zebra pw code has setup a retry to install the
pw after 30 seconds when it is decided that reachability to
the pw is gone.  This causes a failure mode where the
pw code just goes and re-installs the pw after 30 seconds
in the non-reachability case.  Instead it should just be
reinstalling after reachability is restored.

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

index d7128a1f394614805fdfbd4dbf2ed01ea700a1a0..c8ffaf0bbe36ba779bf6f684a7e1fd4a09d35ab7 100644 (file)
@@ -147,7 +147,6 @@ void zebra_pw_update(struct zebra_pw *pw)
 {
        if (zebra_pw_check_reachability(pw) < 0) {
                zebra_pw_uninstall(pw);
-               zebra_pw_install_failure(pw, PW_NOT_FORWARDING);
                /* wait for NHT and try again later */
        } else {
                /*
@@ -167,6 +166,14 @@ static void zebra_pw_install(struct zebra_pw *pw)
 
        hook_call(pw_install, pw);
        if (dplane_pw_install(pw) == ZEBRA_DPLANE_REQUEST_FAILURE) {
+               /*
+                * Realistically this is never going to fail passing
+                * the pw data down to the dplane.  The failure modes
+                * look like impossible events but we still return
+                * on them.... but I don't see a real clean way to remove this
+                * at all.  So let's just leave the retry mechanism for
+                * the moment.
+                */
                zebra_pw_install_failure(pw, PW_NOT_FORWARDING);
                return;
        }