From 6ce0fe7607b84c7af29e02810fe7adcf88372a46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Tue, 18 Jun 2024 18:47:45 +0200 Subject: [PATCH] confd: Stop bfdd if ospf is removed This was not handled in the previous design. --- src/confd/src/ietf-routing.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/confd/src/ietf-routing.c b/src/confd/src/ietf-routing.c index ecf28eb0..73a0d28a 100644 --- a/src/confd/src/ietf-routing.c +++ b/src/confd/src/ietf-routing.c @@ -15,6 +15,7 @@ #define OSPFD_CONF_NEXT OSPFD_CONF "+" #define OSPFD_CONF_PREV OSPFD_CONF "-" #define BFDD_CONF "/etc/frr/bfd_enabled" /* Just signal that bfd should be enabled*/ +#define BFDD_CONF_NEXT BFDD_CONF "+" #define FRR_STATIC_CONFIG "! Generated by Infix\n\ frr defaults traditional\n\ @@ -169,7 +170,7 @@ int parse_ospf(sr_session_ctx_t *session, struct lyd_node *ospf) } if (bfd_enabled) - (void)touch(BFDD_CONF); + (void)touch(BFDD_CONF_NEXT); return 0; } @@ -258,7 +259,7 @@ static int change_control_plane_protocols(sr_session_ctx_t *session, uint32_t su /* Check if passed validation in previous event */ staticd_enabled = fexist(STATICD_CONF_NEXT); ospfd_enabled = fexist(OSPFD_CONF_NEXT); - bfdd_enabled = fexist(BFDD_CONF); + bfdd_enabled = fexist(BFDD_CONF_NEXT); staticd_running = !systemf("initctl -bfq status staticd"); ospfd_running = !systemf("initctl -bfq status ospfd"); bfdd_running = !systemf("initctl -bfq status bfdd"); @@ -293,6 +294,7 @@ static int change_control_plane_protocols(sr_session_ctx_t *session, uint32_t su } if (bfdd_enabled) { + (void)rename(BFDD_CONF_NEXT, BFDD_CONF); if (!bfdd_running) { if (systemf("initctl -bfq enable bfdd")) { ERROR("Failed to enable OSPF routing daemon");