diff options
Diffstat (limited to 'lib/routemap_cli.c')
| -rw-r--r-- | lib/routemap_cli.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/routemap_cli.c b/lib/routemap_cli.c index 9a53c11a4c..e11b9eea74 100644 --- a/lib/routemap_cli.c +++ b/lib/routemap_cli.c @@ -1396,6 +1396,74 @@ void route_map_description_show(struct vty *vty, struct lyd_node *dnode, vty_out(vty, " description %s\n", yang_dnode_get_string(dnode, NULL)); } +DEFPY_YANG( + route_map_optimization, route_map_optimization_cmd, + "[no] route-map WORD$name optimization", + NO_STR + ROUTE_MAP_CMD_STR + "Configure route-map optimization\n") +{ + char xpath[XPATH_MAXLEN]; + + snprintf(xpath, sizeof(xpath), + "/frr-route-map:lib/route-map[name='%s']", name); + nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL); + + snprintf( + xpath, sizeof(xpath), + "/frr-route-map:lib/route-map[name='%s']/optimization-disabled", + name); + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, no ? "true" : "false"); + + return nb_cli_apply_changes(vty, NULL); +} + +void route_map_optimization_disabled_show(struct vty *vty, + struct lyd_node *dnode, + bool show_defaults) +{ + const char *name = yang_dnode_get_string(dnode, "../name"); + const bool disabled = yang_dnode_get_bool(dnode, NULL); + + vty_out(vty, "%sroute-map %s optimization\n", disabled ? "no " : "", + name); +} + +#if CONFDATE > 20220409 +CPP_NOTICE("Time to remove old route-map optimization command") +#endif + +DEFPY_HIDDEN( + routemap_optimization, routemap_optimization_cmd, + "[no] route-map optimization", + NO_STR + "route-map\n" + "optimization\n") +{ + const struct lyd_node *rmi_dnode; + const char *rm_name; + char xpath[XPATH_MAXLEN]; + + vty_out(vty, + "%% This command is deprecated. Please, use `route-map NAME optimization` from the config node.\n"); + + rmi_dnode = + yang_dnode_get(vty->candidate_config->dnode, VTY_CURR_XPATH); + if (!rmi_dnode) { + vty_out(vty, "%% Failed to get RMI dnode in candidate DB\n"); + return CMD_WARNING_CONFIG_FAILED; + } + + rm_name = yang_dnode_get_string(rmi_dnode, "../name"); + + snprintf( + xpath, sizeof(xpath), + "/frr-route-map:lib/route-map[name='%s']/optimization-disabled", + rm_name); + nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, no ? "true" : "false"); + return nb_cli_apply_changes(vty, NULL); +} + static int route_map_config_write(struct vty *vty) { struct lyd_node *dnode; @@ -1447,6 +1515,7 @@ void route_map_cli_init(void) install_element(CONFIG_NODE, &route_map_cmd); install_element(CONFIG_NODE, &no_route_map_cmd); install_element(CONFIG_NODE, &no_route_map_all_cmd); + install_element(CONFIG_NODE, &route_map_optimization_cmd); /* Install the on-match stuff */ install_element(RMAP_NODE, &rmap_onmatch_next_cmd); @@ -1513,4 +1582,6 @@ void route_map_cli_init(void) install_element(RMAP_NODE, &set_srte_color_cmd); install_element(RMAP_NODE, &no_set_srte_color_cmd); + + install_element(RMAP_NODE, &routemap_optimization_cmd); } |
