aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/vrrp/vrrp_api.c3
-rw-r--r--src/plugins/vrrp/vrrp_test.c9
2 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/vrrp/vrrp_api.c b/src/plugins/vrrp/vrrp_api.c
index d2badc0345b..9ef90203f32 100644
--- a/src/plugins/vrrp/vrrp_api.c
+++ b/src/plugins/vrrp/vrrp_api.c
@@ -34,6 +34,8 @@ vl_api_vrrp_vr_add_del_t_handler (vl_api_vrrp_vr_add_del_t * mp)
ip46_address_t *addrs = 0;
int rv;
+ VALIDATE_SW_IF_INDEX (mp);
+
api_flags = htonl (mp->flags);
clib_memset (&vr_conf, 0, sizeof (vr_conf));
@@ -106,6 +108,7 @@ vl_api_vrrp_vr_add_del_t_handler (vl_api_vrrp_vr_add_del_t * mp)
vec_free (addrs);
+ BAD_SW_IF_INDEX_LABEL;
REPLY_MACRO (VL_API_VRRP_VR_ADD_DEL_REPLY);
}
diff --git a/src/plugins/vrrp/vrrp_test.c b/src/plugins/vrrp/vrrp_test.c
index 89ad712dc73..eaa0c40ecd0 100644
--- a/src/plugins/vrrp/vrrp_test.c
+++ b/src/plugins/vrrp/vrrp_test.c
@@ -227,12 +227,19 @@ vl_api_vrrp_vr_details_t_handler (vl_api_vrrp_vr_details_t * mp)
vat_main_t *vam = vrrp_test_main.vat_main;
u32 api_flags = ntohl (mp->config.flags);
int i;
+ u32 state;
char *states[] = {
"VRRP_API_VR_STATE_INIT",
"VRRP_API_VR_STATE_BACKUP",
"VRRP_API_VR_STATE_MASTER",
+ "BAD STATE!",
};
+ state = ntohl (mp->runtime.state);
+
+ if (state > ARRAY_LEN (states) - 2)
+ state = ARRAY_LEN (states) - 1;
+
fformat (vam->ofp, "sw_if_index %u vr_id %u IPv%d: "
"priority %u interval %u preempt %s accept %s unicast %s "
"state %s master_adv_interval %u skew %u master_down_interval %u "
@@ -243,7 +250,7 @@ vl_api_vrrp_vr_details_t_handler (vl_api_vrrp_vr_details_t * mp)
(api_flags & VRRP_API_VR_PREEMPT) ? "yes" : "no",
(api_flags & VRRP_API_VR_ACCEPT) ? "yes" : "no",
(api_flags & VRRP_API_VR_UNICAST) ? "yes" : "no",
- states[ntohl (mp->runtime.state)],
+ states[state],
ntohs (mp->runtime.master_adv_int), ntohs (mp->runtime.skew),
ntohs (mp->runtime.master_down_int),
format_ethernet_address, &mp->runtime.mac);