diff options
| author | radhika <radhika@cumulusnetworks.com> | 2016-05-08 20:11:18 -0700 | 
|---|---|---|
| committer | radhika <radhika@cumulusnetworks.com> | 2016-05-08 20:11:18 -0700 | 
| commit | 567b877d7ff2c04ccf62bca75338cec7a560f184 (patch) | |
| tree | 216b7fa0e0cb090fd081c5810b2be507acd0ff59 /ospfd | |
| parent | 021530c1e3e4f67a313e4c34536bd513809e2054 (diff) | |
zebra - BFD client de-registration support
CM-10680
Issue: When BGP daemon is stopped, all the BGP BFD sessions are not getting deleted from PTM.
Root cause: BGP daemon stop causes BFD de-register message to be sent for every peer on which BFD is enabled. But, all the de-register messages from bgpd to zebra are not processed before the socket close. This results in some stale BGP BFD sessions.
Fix: Support for client de-register message has been added in PTM/BFD.  Changes in Quagga to support BFD client de-registrations:
−   The BFD clients de-registration is sent directly from zebra daemon when zebra client (bgpd, ospfd and ospf6d) socket close is detected.
−   Introduced a BFD flag for the zebra clients to prevent BFD de-registration messages from being sent to zebra daemon when the client is shutting down. This reduces the BFD messaging.
CM-10540
Issue: Invalid ptm status “fail” instead of “n/a” being displayed for VRF interfaces.
Root cause: ptm status is not being initialized to “unknown” status when VRF interface is added or changed. The uninitialized value is ‘0’ which is the value for “fail”
Fix: Initialized the ptm status to the correct value.
Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Kanna Rajagopal <kanna@cumulusnetworks.com>
Ticket: CM-10680, CM-10540
Reviewed By: CCR-4653
Testing Done: PTM smoke, BGP smoke and ptmd_test.py:TestMultipleAddrsIntfOspfBgp
Diffstat (limited to 'ospfd')
| -rw-r--r-- | ospfd/ospf_bfd.c | 2 | ||||
| -rw-r--r-- | ospfd/ospfd.c | 2 | 
2 files changed, 4 insertions, 0 deletions
diff --git a/ospfd/ospf_bfd.c b/ospfd/ospf_bfd.c index e9c6bfd8e7..ec486c4688 100644 --- a/ospfd/ospf_bfd.c +++ b/ospfd/ospf_bfd.c @@ -441,6 +441,8 @@ ALIAS (no_ip_ospf_bfd,  void  ospf_bfd_init(void)  { +  bfd_gbl_init(); +    /* Initialize BFD client functions */    zclient->interface_bfd_dest_update = ospf_bfd_interface_dest_update;    zclient->bfd_dest_replay = ospf_bfd_nbr_replay; diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index 3bb7148242..91702c34b5 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -34,6 +34,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  #include "zclient.h"  #include "plist.h"  #include "sockopt.h" +#include "bfd.h"  #include "ospfd/ospfd.h"  #include "ospfd/ospf_network.h" @@ -468,6 +469,7 @@ ospf_terminate (void)    if (listcount(om->ospf) == 0)      exit(0); +  bfd_gbl_exit();    for (ALL_LIST_ELEMENTS (om->ospf, node, nnode, ospf))      ospf_finish (ospf);  | 
