]> git.puffer.fish Git - mirror/frr.git/commitdiff
babel: Clean babel related config on daemon stop 17715/head
authorYaroslav Kholod <y.kholod@vyos.io>
Mon, 23 Dec 2024 11:06:57 +0000 (13:06 +0200)
committerYaroslav Kholod <y.kholod@vyos.io>
Thu, 2 Jan 2025 11:15:45 +0000 (13:15 +0200)
When deactivating babel no router babel and later re-enabling it router babel the previous configuration is still in place.

Steps to reproduce:

    Enable babel
    Configure babel
    Disable babel with "no router babel"
    Verify config

Expected correct behavior: No config present

Signed-off-by: Yaroslav Kholod <y.kholod@vyos.io>
babeld/babel_interface.c

index b83c7b1908ec20455e14dd7c7236249b8fa38439..f17842366a3c21e7ea02d5e8ca7a91bc6ca04975 100644 (file)
@@ -719,6 +719,7 @@ babel_interface_close_all(void)
 {
     struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
     struct interface *ifp = NULL;
+    int type;
 
     FOR_ALL_INTERFACES(vrf, ifp) {
         if(!if_up(ifp))
@@ -740,8 +741,14 @@ babel_interface_close_all(void)
         flushbuf(ifp);
         usleep(roughly(10000));
         gettime(&babel_now);
+        babel_enable_if_delete(ifp->name);
         interface_reset(ifp);
     }
+    /* Disable babel redistribution */
+    for (type = 0; type < ZEBRA_ROUTE_MAX; type++) {
+        zclient_redistribute (ZEBRA_REDISTRIBUTE_DELETE, zclient, AFI_IP, type, 0, VRF_DEFAULT);
+        zclient_redistribute (ZEBRA_REDISTRIBUTE_DELETE, zclient, AFI_IP6, type, 0, VRF_DEFAULT);
+    }
 }
 
 /* return "true" if address is one of our ipv6 addresses */