summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_vty.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 4f04a97347..7dc8774835 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -6064,19 +6064,23 @@ DEFUN (clear_ip_bgp_all,
/* afi safi */
idx_afi = idx_clr_sort + 1;
idx_safi = idx_clr_sort + 2;
- bgp_get_argv_afi_safi (argc, argv, idx_afi, idx_safi, &afi, &safi, &idx_soft_in_out);
-
- /* soft, soft in, or soft out */
- if (strmatch(argv[idx_soft_in_out]->text, "in"))
- clr_type = BGP_CLEAR_SOFT_IN;
- else if (strmatch(argv[idx_soft_in_out]->text, "out"))
- clr_type = BGP_CLEAR_SOFT_OUT;
- else if (strmatch(argv[idx_soft_in_out]->text, "soft"))
- clr_type = BGP_CLEAR_SOFT_BOTH;
- else if (strmatch(argv[idx_soft_in_out]->text, "prefix-filter"))
- clr_type = BGP_CLEAR_SOFT_IN_ORF_PREFIX;
- else
- clr_type = BGP_CLEAR_SOFT_NONE;
+ idx_soft_in_out = 0;
+ if (argc > idx_afi)
+ bgp_get_argv_afi_safi (argc, argv, idx_afi, idx_safi, &afi, &safi, &idx_soft_in_out);
+
+ clr_type = BGP_CLEAR_SOFT_NONE;
+ if (idx_soft_in_out && argc > idx_soft_in_out)
+ {
+ /* soft, soft in, or soft out */
+ if (strmatch(argv[idx_soft_in_out]->text, "in"))
+ clr_type = BGP_CLEAR_SOFT_IN;
+ else if (strmatch(argv[idx_soft_in_out]->text, "out"))
+ clr_type = BGP_CLEAR_SOFT_OUT;
+ else if (strmatch(argv[idx_soft_in_out]->text, "soft"))
+ clr_type = BGP_CLEAR_SOFT_BOTH;
+ else if (strmatch(argv[idx_soft_in_out]->text, "prefix-filter"))
+ clr_type = BGP_CLEAR_SOFT_IN_ORF_PREFIX;
+ }
return bgp_clear_vty (vty, vrf, afi, safi, clr_sort, clr_type, clr_arg);
}