Skip to content

Commit

Permalink
zebra: Do not retry in 30 seconds on pw reachability failure
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
donaldsharp committed Oct 4, 2024
1 parent 6bc59d3 commit 6a79287
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion zebra/zebra_pw.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
/*
Expand All @@ -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;
}
Expand Down

0 comments on commit 6a79287

Please sign in to comment.