From 463110f7335632d03557f1c5bfdd066b170011a8 Mon Sep 17 00:00:00 2001 From: Sindhu Parvathi Gopinathan Date: Mon, 20 Mar 2023 05:15:03 -0700 Subject: lib:fix clear route-map cmd using DEFPY Due to the wrong input argv id, "argv[idx_word]->arg" fetched in-correctly and it clears all the route-maps instead of specific one. Now correct argv id is passed to clear the given route-map counters. Also, use RMAP_NAME which allows to show list of configured route-maps in the system. After Fix:- Ticket:#3407773 Issue:3407773 Testing: UT done Before: TORC11# clear route-map counters WORD route-map name After: TORC11# clear route-map counters RMAP_NAME route-map name my-as Signed-off-by: Chirag Shah Signed-off-by: Sindhu Parvathi Gopinathan's --- lib/routemap.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/routemap.c b/lib/routemap.c index 9f5c9e693..16da81fa7 100644 --- a/lib/routemap.c +++ b/lib/routemap.c @@ -3101,27 +3101,24 @@ static void clear_route_map_helper(struct route_map *map) index->applied_clear = index->applied; } -DEFUN (rmap_clear_counters, +DEFPY (rmap_clear_counters, rmap_clear_counters_cmd, - "clear route-map counters [WORD]", + "clear route-map counters [RMAP_NAME$rmapname]", CLEAR_STR "route-map information\n" "counters associated with the specified route-map\n" "route-map name\n") { - int idx_word = 2; struct route_map *map; - const char *name = (argc == 3 ) ? argv[idx_word]->arg : NULL; - - if (name) { - map = route_map_lookup_by_name(name); + if (rmapname) { + map = route_map_lookup_by_name(rmapname); if (map) clear_route_map_helper(map); else { vty_out(vty, "%s: 'route-map %s' not found\n", - frr_protonameinst, name); + frr_protonameinst, rmapname); return CMD_SUCCESS; } } else { -- cgit v1.2.3