diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c index b83c7b1908..f17842366a 100644 --- a/babeld/babel_interface.c +++ b/babeld/babel_interface.c @@ -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 */