From a5dc3899a65eac5018e878e1d021b5ad066c1e00 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sat, 23 Feb 2019 19:27:09 -0500 Subject: [PATCH] bgpd: Cleanup cli for [l]community_delete functions The community_delete and lcommunity_delete functionality was creating a special string that needed to be specially parsed. Remove all this string creation and just pass the pertinent data into the appropriate functions. Signed-off-by: Donald Sharp --- bgpd/bgp_routemap.c | 46 ++++++--------------------------------------- 1 file changed, 6 insertions(+), 40 deletions(-) diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index 17109281bc..358e4285be 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -2046,22 +2046,12 @@ static route_map_result_t route_set_lcommunity_delete(void *rule, static void *route_set_lcommunity_delete_compile(const char *arg) { struct rmap_community *rcom; - char *p; - char *str; - int len; rcom = XCALLOC(MTYPE_ROUTE_MAP_COMPILED, sizeof(struct rmap_community)); - p = strchr(arg, ' '); - if (p) { - len = p - arg; - str = XCALLOC(MTYPE_ROUTE_MAP_COMPILED, len + 1); - memcpy(str, arg, len); - } else - str = NULL; - - rcom->name = str; + rcom->name = XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); rcom->name_hash = bgp_clist_hash_key(rcom->name); + return rcom; } @@ -2141,22 +2131,12 @@ static route_map_result_t route_set_community_delete( static void *route_set_community_delete_compile(const char *arg) { struct rmap_community *rcom; - char *p; - char *str; - int len; rcom = XCALLOC(MTYPE_ROUTE_MAP_COMPILED, sizeof(struct rmap_community)); - p = strchr(arg, ' '); - if (p) { - len = p - arg; - str = XCALLOC(MTYPE_ROUTE_MAP_COMPILED, len + 1); - memcpy(str, arg, len); - } else - str = NULL; - - rcom->name = str; + rcom->name = XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); rcom->name_hash = bgp_clist_hash_key(rcom->name); + return rcom; } @@ -4351,17 +4331,10 @@ DEFUN (set_community_delete, "Delete matching communities\n") { int idx_comm_list = 2; - char *str; - - str = XCALLOC(MTYPE_TMP, - strlen(argv[idx_comm_list]->arg) + strlen(" delete") + 1); - strcpy(str, argv[idx_comm_list]->arg); - strcpy(str + strlen(argv[idx_comm_list]->arg), " delete"); generic_set_add(vty, VTY_GET_CONTEXT(route_map_index), "comm-list", - str); + argv[idx_comm_list]->arg); - XFREE(MTYPE_TMP, str); return CMD_SUCCESS; } @@ -4450,16 +4423,9 @@ DEFUN (set_lcommunity_delete, "Large Community-list name\n" "Delete matching large communities\n") { - char *str; - - str = XCALLOC(MTYPE_TMP, strlen(argv[2]->arg) + strlen(" delete") + 1); - strcpy(str, argv[2]->arg); - strcpy(str + strlen(argv[2]->arg), " delete"); - generic_set_add(vty, VTY_GET_CONTEXT(route_map_index), - "large-comm-list", str); + "large-comm-list", argv[2]->arg); - XFREE(MTYPE_TMP, str); return CMD_SUCCESS; } -- 2.39.5