mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 02:20:43 +00:00
vrrpd: gracefully shutdown on SIGTERM / SIGINT
Handle kill signals by gracefully destroying all of our VRRP instances. If any of them are in Master state, send an advert with 0 priority to notify Backup routers we are going down. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
4f576e7575
commit
f1175ba931
18
vrrpd/vrrp.c
18
vrrpd/vrrp.c
@ -2354,3 +2354,21 @@ void vrrp_init(void)
|
||||
"VRRP virtual router hash");
|
||||
vrf_init(NULL, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
void vrrp_fini(void)
|
||||
{
|
||||
/* Destroy all instances */
|
||||
struct list *vrs = hash_to_list(vrrp_vrouters_hash);
|
||||
|
||||
struct listnode *ln;
|
||||
struct vrrp_vrouter *vr;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(vrs, ln, vr)) {
|
||||
vrrp_vrouter_destroy(vr);
|
||||
}
|
||||
|
||||
list_delete(&vrs);
|
||||
|
||||
hash_clean(vrrp_vrouters_hash, NULL);
|
||||
hash_free(vrrp_vrouters_hash);
|
||||
}
|
||||
|
@ -265,6 +265,14 @@ struct vrrp_vrouter {
|
||||
*/
|
||||
void vrrp_init(void);
|
||||
|
||||
/*
|
||||
* Destroy all VRRP instances and gracefully shutdown.
|
||||
*
|
||||
* For instances in Master state, VRRP advertisements with 0 priority will be
|
||||
* sent if possible to notify Backup routers that we are going away.
|
||||
*/
|
||||
void vrrp_fini(void);
|
||||
|
||||
|
||||
/* Creation and destruction ------------------------------------------------ */
|
||||
|
||||
|
@ -69,10 +69,12 @@ static void sighup(void)
|
||||
}
|
||||
|
||||
/* SIGINT / SIGTERM handler. */
|
||||
static void sigint(void)
|
||||
static void __attribute__((noreturn)) sigint(void)
|
||||
{
|
||||
zlog_notice("Terminating on signal");
|
||||
|
||||
vrrp_fini();
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user