diff options
author | radhika <radhika@cumulusnetworks.com> | 2016-06-21 12:39:58 +0200 |
---|---|---|
committer | radhika <radhika@cumulusnetworks.com> | 2016-06-21 12:39:58 +0200 |
commit | 2376c3f225ee601e2e025e1813006ab79c3fd0a6 (patch) | |
tree | 6bab931635afa55ebeacc2e716e1055409d301b8 /bgpd/bgp_bfd.c | |
parent | quagga: Allow compile time determination of v6 RR semantics (diff) | |
download | frr-2376c3f225ee601e2e025e1813006ab79c3fd0a6.tar.xz frr-2376c3f225ee601e2e025e1813006ab79c3fd0a6.zip |
bfd: Fix for missing BFD client regs/deregs from quagga clients
Ticket: CM-11256
Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Kanna Rajagopal <kanna@cumulusnetworks.com>
Testing: Unit, PTM smoke, OSPF smoke, BGP Smoke
Issue:
BFD client registrations are not being sent to PTM from BGP/OSPF clients when the quagga clients have no BFD configuration. This can create stale BFD sessions in PTM when BFD is removed from quagga configuration before quagga is restarted.
BFD client de-registrations from BGP/OSPF also go missing sometimes when quagga is restarted. This also will cause stale BFD sessions in PTM.
Root Cause:
BFD client registrations were being sent at the time of BGP/OSPF daemon initialization. But, they were being sent to zebra before the socket connection between zebra and BGP/OSPF was established. This causes the missing BFD client registrations.
BFD client de-registrations are sent from zebra when zebra detects socket close for BGP/OSPF daemons. Based on the timing, the de-registrations may happen after socket between PTM and zebra is closed. This will result in missing de-registrations.
Fix:
Moved sending of BFD client registration messages to zebra connected callback to make sure that they are sent after the BGP/OSPF daemons connect with zebra.
Added BFD client de-registrations for BGP/OSPF to be also sent when zebra daemon gets restart signal. They are sent from the signal handler only if it was not already handled in zebra client socket close callback.
Diffstat (limited to 'bgpd/bgp_bfd.c')
-rw-r--r-- | bgpd/bgp_bfd.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/bgpd/bgp_bfd.c b/bgpd/bgp_bfd.c index b64fbee04..b8b005369 100644 --- a/bgpd/bgp_bfd.c +++ b/bgpd/bgp_bfd.c @@ -711,7 +711,4 @@ bgp_bfd_init(void) install_element (BGP_NODE, &no_neighbor_bfd_cmd); install_element (BGP_NODE, &no_neighbor_bfd_val_cmd); install_element (BGP_NODE, &no_neighbor_bfd_type_cmd); - - /* Send the client registration */ - bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER); } |