From 205eb006c61e803b3fb3c6daed7b7326badb144b Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 8 Feb 2019 19:52:24 +0000 Subject: [PATCH] vrrpd: don't restart when changing priority Both master and backup should be able to react to priority changes without requiring a restart. Signed-off-by: Quentin Young --- vrrpd/vrrp.c | 3 --- vrrpd/vrrp_vty.c | 28 ---------------------------- 2 files changed, 31 deletions(-) diff --git a/vrrpd/vrrp.c b/vrrpd/vrrp.c index 01044b580f..6cfbd7c090 100644 --- a/vrrpd/vrrp.c +++ b/vrrpd/vrrp.c @@ -125,9 +125,6 @@ static bool vrrp_is_owner(struct interface *ifp, struct ipaddr *addr) void vrrp_set_priority(struct vrrp_vrouter *vr, uint8_t priority) { - if (vr->priority == priority) - return; - vr->priority = priority; vr->v4->priority = priority; vr->v6->priority = priority; diff --git a/vrrpd/vrrp_vty.c b/vrrpd/vrrp_vty.c index c73e5cb556..c32e5c2c8c 100644 --- a/vrrpd/vrrp_vty.c +++ b/vrrpd/vrrp_vty.c @@ -106,40 +106,12 @@ DEFPY(vrrp_priority, VTY_DECLVAR_CONTEXT(interface, ifp); struct vrrp_vrouter *vr; - struct vrrp_router *r; - bool nr[2] = { false, false }; - int ret = CMD_SUCCESS; uint8_t newprio = no ? VRRP_DEFAULT_PRIORITY : priority; VROUTER_GET_VTY(vty, ifp, vrid, vr); - r = vr->v4; - for (int i = 0; i < 2; i++) { - nr[i] = r->is_active && r->fsm.state != VRRP_STATE_INITIALIZE - && vr->priority != newprio; - if (nr[i]) { - vty_out(vty, - "%% WARNING: Restarting %s Virtual Router %ld to update priority\n", - family2str(r->family), vrid); - (void)vrrp_event(r, VRRP_EVENT_SHUTDOWN); - } - r = vr->v6; - } - vrrp_set_priority(vr, newprio); - r = vr->v4; - for (int i = 0; i < 2; i++) { - if (nr[i]) { - ret = vrrp_event(r, VRRP_EVENT_STARTUP); - if (ret < 0) - vty_out(vty, - "%% Failed to start Virtual Router %ld (%s)\n", - vrid, family2str(r->family)); - } - r = vr->v6; - } - return CMD_SUCCESS; } -- 2.39.5