From 54aadda13d7d2ff7edaae4128f0bf027abb3a711 Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Tue, 26 Mar 2019 12:13:38 +0100 Subject: [PATCH] bfdd: register to interfaces from other vrfs registration for new interfaces is done. Signed-off-by: Philippe Guibert --- bfdd/bfd.c | 7 +++++++ bfdd/bfd.h | 2 ++ bfdd/ptm_adapter.c | 14 ++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/bfdd/bfd.c b/bfdd/bfd.c index 308de24174..8acf779660 100644 --- a/bfdd/bfd.c +++ b/bfdd/bfd.c @@ -1502,6 +1502,9 @@ static int bfd_vrf_enable(struct vrf *vrf) if (!bvrf->bg_ev[5]) thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_echov6, &bvrf->bg_ev[5]); + + if (vrf->vrf_id != VRF_DEFAULT) + bfdd_zclient_register(vrf->vrf_id); return 0; } @@ -1512,6 +1515,10 @@ static int bfd_vrf_disable(struct vrf *vrf) if (!vrf->info) return 0; bvrf = vrf->info; + + if (vrf->vrf_id != VRF_DEFAULT) + bfdd_zclient_unregister(vrf->vrf_id); + log_debug("VRF disable %s id %d", vrf->name, vrf->vrf_id); /* Close all descriptors. */ socket_close(&bvrf->bg_echo); diff --git a/bfdd/bfd.h b/bfdd/bfd.h index d194851d7a..c94b9a6371 100644 --- a/bfdd/bfd.h +++ b/bfdd/bfd.h @@ -586,6 +586,8 @@ void bfdd_vty_init(void); */ void bfdd_zclient_init(struct zebra_privs_t *bfdd_priv); void bfdd_zclient_stop(void); +void bfdd_zclient_unregister(vrf_id_t vrf_id); +void bfdd_zclient_register(vrf_id_t vrf_id); int ptm_bfd_notify(struct bfd_session *bs); diff --git a/bfdd/ptm_adapter.c b/bfdd/ptm_adapter.c index 606faa7cdf..a98d19aa2f 100644 --- a/bfdd/ptm_adapter.c +++ b/bfdd/ptm_adapter.c @@ -716,6 +716,20 @@ void bfdd_zclient_init(struct zebra_privs_t *bfdd_priv) zclient->interface_address_delete = bfdd_interface_address_update; } +void bfdd_zclient_register(vrf_id_t vrf_id) +{ + if (!zclient || zclient->sock < 0) + return; + zclient_send_reg_requests(zclient, vrf_id); +} + +void bfdd_zclient_unregister(vrf_id_t vrf_id) +{ + if (!zclient || zclient->sock < 0) + return; + zclient_send_dereg_requests(zclient, vrf_id); +} + void bfdd_zclient_stop(void) { zclient_stop(zclient); -- 2.39.5