diff options
| author | Karen Schoener <karen@voltanet.io> | 2020-12-08 09:44:27 -0500 | 
|---|---|---|
| committer | Karen Schoener <karen@volta.io> | 2020-12-09 08:41:42 -0500 | 
| commit | cb135cc94303d2581987645f124bd6d4cecd80a6 (patch) | |
| tree | 5dd374ddd2105b3a82439ec1c4e8ea686b5e55d0 /ospfd/ospf_zebra.c | |
| parent | b64e1733746a2cabb5b25b283407c095fc1c8c3a (diff) | |
isisd, ospfd: IGPs detect LDP down via zapi client close message
When ldp-sync is configured, IGPs take action if the LDP process goes down.
Currently, IGPs detect the LDP process is down if they do not receive a
periodic 'hello' message from LDP within 1 second.
Intermittently, this heartbeat mechanism causes false topotest failures.
When the failure occurs, LDP is busy receiving messages from zebra for a
few seconds.  During this time, LDP does not send the expected periodic
message.
With this change, IGPs detect LDP down via zapi client close message.
Signed-off-by: Karen Schoener <karen@voltanet.io>
Diffstat (limited to 'ospfd/ospf_zebra.c')
| -rw-r--r-- | ospfd/ospf_zebra.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index e7dbdbd9af..93d4ee0ec7 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -1986,6 +1986,20 @@ stream_failure:  	return ret;  } +static int ospf_zebra_client_close_notify(ZAPI_CALLBACK_ARGS) +{ +	int ret = 0; + +	struct zapi_client_close_info info; + +	if (zapi_client_close_notify_decode(zclient->ibuf, &info) < 0) +		return -1; + +	ospf_ldp_sync_handle_client_close(&info); + +	return ret; +} +  void ospf_zebra_init(struct thread_master *master, unsigned short instance)  {  	/* Allocate zebra structure. */ @@ -2021,6 +2035,8 @@ void ospf_zebra_init(struct thread_master *master, unsigned short instance)  	prefix_list_delete_hook(ospf_prefix_list_update);  	zclient->opaque_msg_handler = ospf_opaque_msg_handler; + +	zclient->zebra_client_close_notify = ospf_zebra_client_close_notify;  }  void ospf_zebra_send_arp(const struct interface *ifp, const struct prefix *p)  | 
