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. */
|
/* 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)
|
static void clear_route_map_helper(struct route_map *map)
|
||||||
{
|
{
|
||||||
struct route_map_index *index;
|
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, &debug_rmap_cmd);
|
||||||
install_element(ENABLE_NODE, &no_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);
|
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));
|
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)
|
static int route_map_config_write(struct vty *vty)
|
||||||
{
|
{
|
||||||
struct lyd_node *dnode;
|
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, &set_srte_color_cmd);
|
||||||
install_element(RMAP_NODE, &no_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;
|
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
|
* 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,
|
.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",
|
.xpath = "/frr-route-map:lib/route-map/entry",
|
||||||
.cbs = {
|
.cbs = {
|
||||||
|
|
|
@ -364,6 +364,11 @@ module frr-route-map {
|
||||||
description
|
description
|
||||||
"Route map instance name";
|
"Route map instance name";
|
||||||
}
|
}
|
||||||
|
leaf optimization-disabled {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
description "Disables or enables the optimization";
|
||||||
|
}
|
||||||
|
|
||||||
list entry {
|
list entry {
|
||||||
key "sequence";
|
key "sequence";
|
||||||
|
|
Loading…
Reference in a new issue