forked from Mirror/frr
lib: convert route-map optimization to NB
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
d6cfe1b884
commit
3ebeec9446
|
@ -2906,29 +2906,6 @@ void route_map_notify_dependencies(const char *affected_name,
|
|||
}
|
||||
|
||||
/* VTY related functions. */
|
||||
DEFUN(no_routemap_optimization, no_routemap_optimization_cmd,
|
||||
"no route-map optimization",
|
||||
NO_STR
|
||||
"route-map\n"
|
||||
"optimization\n")
|
||||
{
|
||||
VTY_DECLVAR_CONTEXT(route_map_index, index);
|
||||
|
||||
index->map->optimization_disabled = true;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(routemap_optimization, routemap_optimization_cmd,
|
||||
"route-map optimization",
|
||||
"route-map\n"
|
||||
"optimization\n")
|
||||
{
|
||||
VTY_DECLVAR_CONTEXT(route_map_index, index);
|
||||
|
||||
index->map->optimization_disabled = false;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void clear_route_map_helper(struct route_map *map)
|
||||
{
|
||||
struct route_map_index *index;
|
||||
|
@ -3241,8 +3218,5 @@ void route_map_init(void)
|
|||
install_element(ENABLE_NODE, &debug_rmap_cmd);
|
||||
install_element(ENABLE_NODE, &no_debug_rmap_cmd);
|
||||
|
||||
install_element(RMAP_NODE, &routemap_optimization_cmd);
|
||||
install_element(RMAP_NODE, &no_routemap_optimization_cmd);
|
||||
|
||||
install_element(ENABLE_NODE, &show_route_map_pfx_tbl_cmd);
|
||||
}
|
||||
|
|
|
@ -1396,6 +1396,33 @@ 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(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];
|
||||
|
||||
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;
|
||||
|
@ -1513,4 +1540,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);
|
||||
}
|
||||
|
|
|
@ -140,6 +140,30 @@ static int lib_route_map_destroy(struct nb_cb_destroy_args *args)
|
|||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-route-map:lib/route-map/optimization-disabled
|
||||
*/
|
||||
static int
|
||||
lib_route_map_optimization_disabled_modify(struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct route_map *rm;
|
||||
bool disabled = yang_dnode_get_bool(args->dnode, NULL);
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_VALIDATE:
|
||||
case NB_EV_PREPARE:
|
||||
case NB_EV_ABORT:
|
||||
/* NOTHING */
|
||||
break;
|
||||
case NB_EV_APPLY:
|
||||
rm = nb_running_get_entry(args->dnode, NULL, true);
|
||||
rm->optimization_disabled = disabled;
|
||||
break;
|
||||
}
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-route-map:lib/route-map/entry
|
||||
*/
|
||||
|
@ -1197,6 +1221,12 @@ const struct frr_yang_module_info frr_route_map_info = {
|
|||
.destroy = lib_route_map_destroy,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-route-map:lib/route-map/optimization-disabled",
|
||||
.cbs = {
|
||||
.modify = lib_route_map_optimization_disabled_modify,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-route-map:lib/route-map/entry",
|
||||
.cbs = {
|
||||
|
|
|
@ -364,6 +364,11 @@ module frr-route-map {
|
|||
description
|
||||
"Route map instance name";
|
||||
}
|
||||
leaf optimization-disabled {
|
||||
type boolean;
|
||||
default false;
|
||||
description "Disables or enables the optimization";
|
||||
}
|
||||
|
||||
list entry {
|
||||
key "sequence";
|
||||
|
|
Loading…
Reference in a new issue