From: Igor Ryzhov Date: Thu, 22 Apr 2021 12:24:49 +0000 (+0300) Subject: lib: remove enabled flag for bfd sessions X-Git-Tag: base_8.0~114^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e82acdce22d271d7b51a2ecb69e3353dc848f4b0;p=mirror%2Ffrr.git lib: remove enabled flag for bfd sessions Currently this flag is only helpful in an extremely rare situation when the BFD session registration was unsuccessful and after that zebra is restarted. Let's remove this flag to simplify the API. If we ever want to solve the problem of unsuccessful registration/deregistration, this can be done using internal flags, without API modification. Also add the error log to help user understand why the BFD session is not working. Signed-off-by: Igor Ryzhov --- diff --git a/bgpd/bgp_bfd.c b/bgpd/bgp_bfd.c index 958d7cf0ed..6004070e68 100644 --- a/bgpd/bgp_bfd.c +++ b/bgpd/bgp_bfd.c @@ -308,8 +308,6 @@ void bgp_peer_configure_bfd(struct peer *p, bool manual) if (p->nexthop.ifp) bfd_sess_set_interface(p->bfd_config->session, p->nexthop.ifp->name); - - bfd_sess_enable(p->bfd_config->session, true); } static void bgp_peer_remove_bfd(struct peer *p) diff --git a/lib/bfd.c b/lib/bfd.c index d22a9150d1..bf3eaa32db 100644 --- a/lib/bfd.c +++ b/lib/bfd.c @@ -619,8 +619,6 @@ struct bfd_session_params { /** BFD session installation state. */ bool installed; - /** BFD session enabled. */ - bool enabled; /** Global BFD paramaters list. */ TAILQ_ENTRY(bfd_session_params) entry; @@ -748,6 +746,21 @@ static int _bfd_sess_send(struct thread *t) bsp->installed = false; else if (bsp->args.command == ZEBRA_BFD_DEST_REGISTER) bsp->installed = true; + } else { + struct ipaddr src, dst; + + src.ipa_type = bsp->args.family; + src.ipaddr_v6 = bsp->args.src; + dst.ipa_type = bsp->args.family; + dst.ipaddr_v6 = bsp->args.dst; + + zlog_err( + "%s: BFD session %pIA -> %pIA interface %s VRF %s(%u) was not %s", + __func__, &src, &dst, + bsp->args.ifnamelen ? bsp->args.ifname : "*", + vrf_id_to_name(bsp->args.vrf_id), bsp->args.vrf_id, + bsp->lastev == BSE_INSTALL ? "installed" + : "uninstalled"); } return 0; @@ -782,15 +795,6 @@ void bfd_sess_free(struct bfd_session_params **bsp) XFREE(MTYPE_BFD_INFO, (*bsp)); } -void bfd_sess_enable(struct bfd_session_params *bsp, bool enable) -{ - /* Remove the session when disabling. */ - if (!enable) - _bfd_sess_remove(bsp); - - bsp->enabled = enable; -} - void bfd_sess_set_ipv4_addrs(struct bfd_session_params *bsp, struct in_addr *src, struct in_addr *dst) { @@ -909,10 +913,6 @@ void bfd_sess_set_timers(struct bfd_session_params *bsp, void bfd_sess_install(struct bfd_session_params *bsp) { - /* Don't attempt to install/update when disabled. */ - if (!bsp->enabled) - return; - bsp->lastev = BSE_INSTALL; thread_add_event(bsglobal.tm, _bfd_sess_send, bsp, 0, &bsp->installev); } @@ -1060,8 +1060,8 @@ static int zclient_bfd_session_reply(ZAPI_CALLBACK_ARGS) /* Replay all activated peers. */ TAILQ_FOREACH (bsp, &bsglobal.bsplist, entry) { - /* Skip disabled sessions. */ - if (!bsp->enabled) + /* Skip not installed sessions. */ + if (!bsp->installed) continue; /* We are reconnecting, so we must send installation. */ @@ -1138,8 +1138,8 @@ static int zclient_bfd_session_update(ZAPI_CALLBACK_ARGS) /* Notify all matching sessions about update. */ TAILQ_FOREACH (bsp, &bsglobal.bsplist, entry) { - /* Skip disabled or not installed entries. */ - if (!bsp->enabled || !bsp->installed) + /* Skip not installed entries. */ + if (!bsp->installed) continue; /* Skip different VRFs. */ if (bsp->args.vrf_id != vrf_id) diff --git a/lib/bfd.h b/lib/bfd.h index 1325f86a30..230fde5e1f 100644 --- a/lib/bfd.h +++ b/lib/bfd.h @@ -184,14 +184,6 @@ struct bfd_session_params *bfd_sess_new(bsp_status_update updatecb, void *args); */ void bfd_sess_free(struct bfd_session_params **bsp); -/** - * Enable/disable session installation. - * - * \param bsp session parameters. - * \param enable knob variable. - */ -void bfd_sess_enable(struct bfd_session_params *bsp, bool enable); - /** * Set the local and peer address of the BFD session. * diff --git a/ospfd/ospf_bfd.c b/ospfd/ospf_bfd.c index 2ab7db68bd..56116cd28d 100644 --- a/ospfd/ospf_bfd.c +++ b/ospfd/ospf_bfd.c @@ -99,7 +99,6 @@ void ospf_neighbor_bfd_apply(struct ospf_neighbor *nbr) bfd_sess_set_ipv4_addrs(nbr->bfd_session, NULL, &nbr->src); bfd_sess_set_interface(nbr->bfd_session, oi->ifp->name); bfd_sess_set_vrf(nbr->bfd_session, oi->ospf->vrf_id); - bfd_sess_enable(nbr->bfd_session, true); } /* Set new configuration. */