summaryrefslogtreecommitdiff
path: root/zebra
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2024-10-04 09:51:46 -0400
committerDonald Sharp <sharpd@nvidia.com>2024-10-07 20:36:45 -0400
commita8af2b2a9d0f9fe059f645ee033087a293ab6b35 (patch)
tree9883ae6e74110cdbc5ad3d76c4cdc2f7792d2583 /zebra
parentf50b1f7c226753c1f4c0ccfeeb78271106924cd8 (diff)
zebra: Do not retry in 30 seconds on pw reachability failure
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>
Diffstat (limited to 'zebra')
-rw-r--r--zebra/zebra_pw.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/zebra/zebra_pw.c b/zebra/zebra_pw.c
index d7128a1f39..c8ffaf0bbe 100644
--- a/zebra/zebra_pw.c
+++ b/zebra/zebra_pw.c
@@ -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;
}