registration for new interfaces is done.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
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;
}
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);
*/
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);
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);