diff options
author | radhika <radhika@cumulusnetworks.com> | 2017-01-06 21:54:25 +0100 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-01-30 19:40:21 +0100 |
commit | 3fa113f00cf15f8248db399b6da7210e8db3ceb4 (patch) | |
tree | c610cb9cb03f5c490127612ae78a61044f3c48b7 /bgpd/bgp_bfd.c | |
parent | tools: Fix unnecessary routing perturbations due to old style config (diff) | |
download | frr-3fa113f00cf15f8248db399b6da7210e8db3ceb4.tar.xz frr-3fa113f00cf15f8248db399b6da7210e8db3ceb4.zip |
bgpd, zebra: Fix for ignored non-default VRF single-hop BFD status messages in Quagga
Ticket: CM-13425
Reviewed By: Donald, Kanna
Testing Done: Unit, Min tests, PTM Smoke and Nightly, BGP Smoke
Issue: BFD status up/down not reflected in the Quagga for non-default VRF single-hop BFD sessions.
Root Cause: PTM doesn’t keep track of VRF for Single hop BFD sessions since they are interface-based sessions. The status up/down messages to the quagga for single hop sessions do not have VRF information. In zebra daemon, the interface search based on the interface name extracted from the BFD status message is done across all VRFs. So, the search does not fail in zebra daemon. But, the interface search in bgpd/ospd is done per vrf and default VRF is used for search if no VRF is sent in the status message. So, the search fails and the BFD status changes are ignored.
Fix: The VRF information is extracted from the interface if VRF is not sent in the BFD status messages in zebra daemon and passed to bgpd/ospfd. The interface search will not fail since the appropriate VRF is passed to bgpd/ospfd and BFD satus changes are not ignored.
Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>
Diffstat (limited to 'bgpd/bgp_bfd.c')
-rw-r--r-- | bgpd/bgp_bfd.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/bgpd/bgp_bfd.c b/bgpd/bgp_bfd.c index ad221d922..4f76fd17f 100644 --- a/bgpd/bgp_bfd.c +++ b/bgpd/bgp_bfd.c @@ -311,14 +311,14 @@ bgp_bfd_dest_update (int command, struct zclient *zclient, prefix2str(&dp, buf[0], sizeof(buf[0])); if (ifp) { - zlog_debug("Zebra: interface %s bfd destination %s %s", - ifp->name, buf[0], bfd_get_status_str(status)); + zlog_debug("Zebra: vrf %d interface %s bfd destination %s %s", + vrf_id, ifp->name, buf[0], bfd_get_status_str(status)); } else { prefix2str(&sp, buf[1], sizeof(buf[1])); - zlog_debug("Zebra: source %s bfd destination %s %s", - buf[1], buf[0], bfd_get_status_str(status)); + zlog_debug("Zebra: vrf %d source %s bfd destination %s %s", + vrf_id, buf[1], buf[0], bfd_get_status_str(status)); } } |