summaryrefslogtreecommitdiffstats
path: root/vrrpd/vrrp.c
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@cumulusnetworks.com>2019-10-29 19:47:04 +0100
committerQuentin Young <qlyoung@cumulusnetworks.com>2019-10-30 07:02:07 +0100
commitd8b92c67bfacab121ff165d874c74e0ddef8ca68 (patch)
treeb804a1da0fda73a9e9f96bc45dbbc00932029f29 /vrrpd/vrrp.c
parentMerge pull request #5249 from donaldsharp/pim_duplicate (diff)
downloadfrr-d8b92c67bfacab121ff165d874c74e0ddef8ca68.tar.xz
frr-d8b92c67bfacab121ff165d874c74e0ddef8ca68.zip
vrrpd: some more error logging fixes
- Give the correct log message when refusing to start because the vr is already started - Fix a couple other : whynot; cases missed Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'vrrpd/vrrp.c')
-rw-r--r--vrrpd/vrrp.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/vrrpd/vrrp.c b/vrrpd/vrrp.c
index df2376c47..eed0e8a31 100644
--- a/vrrpd/vrrp.c
+++ b/vrrpd/vrrp.c
@@ -281,7 +281,7 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
{
struct vrrp_router *r;
bool start;
- const char *whynot;
+ const char *whynot = NULL;
if (vr->shutdown || vr->ifp == NULL)
return;
@@ -289,13 +289,14 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
r = vr->v4;
/* Must not already be started */
start = r->fsm.state == VRRP_STATE_INITIALIZE;
- whynot = NULL;
+ whynot = (!start && !whynot) ? "Already running" : whynot;
/* Must have a parent interface */
start = start && (vr->ifp != NULL);
whynot = (!start && !whynot) ? "No base interface" : whynot;
#if 0
/* Parent interface must be up */
start = start && if_is_operative(vr->ifp);
+ start = (!start && !whynot) ? "Base interface inoperative" : whynot;
#endif
/* Parent interface must have at least one v4 */
start = start && connected_count_by_family(vr->ifp, AF_INET) > 0;
@@ -306,6 +307,7 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
#if 0
/* Macvlan interface must be admin up */
start = start && CHECK_FLAG(r->mvl_ifp->flags, IFF_UP);
+ start = (!start && !whynot) ? "Macvlan device admin down" : whynot;
#endif
/* Must have at least one VIP configured */
start = start && r->addrs->count > 0;
@@ -318,10 +320,12 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
"Refusing to start Virtual Router: %s",
vr->vrid, family2str(r->family), whynot);
+ whynot = NULL;
+
r = vr->v6;
/* Must not already be started */
start = r->fsm.state == VRRP_STATE_INITIALIZE;
- whynot = NULL;
+ whynot = (!start && !whynot) ? "Already running" : whynot;
/* Must not be v2 */
start = start && vr->version != 2;
whynot = (!start && !whynot) ? "VRRPv2 does not support v6" : whynot;
@@ -331,6 +335,7 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
#if 0
/* Parent interface must be up */
start = start && if_is_operative(vr->ifp);
+ start = (!start && !whynot) ? "Base interface inoperative" : whynot;
#endif
/* Must have a macvlan interface */
start = start && (r->mvl_ifp != NULL);
@@ -338,6 +343,7 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
#if 0
/* Macvlan interface must be admin up */
start = start && CHECK_FLAG(r->mvl_ifp->flags, IFF_UP);
+ start = (!start && !whynot) ? "Macvlan device admin down" : whynot;
/* Macvlan interface must have a link local */
start = start && connected_get_linklocal(r->mvl_ifp);
whynot =