Commit 4431cab1fc for frr
commit 4431cab1fc216c1260e7c5c7b8072b88a4bd2944
Author: Jafar Al-Gharaibeh <jafar@atcorp.com>
Date: Fri Oct 2 14:28:13 2026 -0500
staticd: register as a BFD client when zebra connects
static_bfd_initialize() sends ZEBRA_BFD_CLIENT_REGISTER before the zebra
connection exists, so it is dropped. Send it from zebra_connected() so
shutdown does not log "failed to find process pid registration".
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
diff --git a/staticd/static_zebra.c b/staticd/static_zebra.c
index 87efc92fea..70bb91da62 100644
--- a/staticd/static_zebra.c
+++ b/staticd/static_zebra.c
@@ -33,6 +33,7 @@
#include "zclient.h"
#include "static_srv6.h"
#include "lib_errors.h"
+#include "bfd.h"
DEFINE_MTYPE_STATIC(STATIC, STATIC_NHT_DATA, "Static Nexthop tracking data");
PREDECL_HASH(static_nht_hash);
@@ -178,6 +179,16 @@ static void zebra_connected(struct zclient *zclient)
{
struct vrf *vrf;
+ /*
+ * Send the BFD client registration, as the other BFD-integrated
+ * daemons do. The one sent from static_bfd_initialize() happens
+ * before the zebra connection is up and never reaches zebra, so
+ * without any BFD-tracked route zebra has no registration for us
+ * and logs "failed to find process pid registration" when we
+ * disconnect.
+ */
+ bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER, VRF_DEFAULT);
+
zebra_route_notify_send(ZEBRA_ROUTE_NOTIFY_REQUEST, zclient, true);
zclient_send_reg_requests(zclient, VRF_DEFAULT);