summaryrefslogtreecommitdiff
path: root/ripd/rip_cli.c
diff options
context:
space:
mode:
Diffstat (limited to 'ripd/rip_cli.c')
-rw-r--r--ripd/rip_cli.c645
1 files changed, 185 insertions, 460 deletions
diff --git a/ripd/rip_cli.c b/ripd/rip_cli.c
index 510aa66155..e0e5d95895 100644
--- a/ripd/rip_cli.c
+++ b/ripd/rip_cli.c
@@ -45,17 +45,12 @@ DEFPY_NOSH (router_rip,
{
int ret;
- struct cli_config_change changes[] = {
- {
- .xpath = "/frr-ripd:ripd/instance",
- .operation = NB_OP_CREATE,
- .value = NULL,
- },
- };
-
- ret = nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "/frr-ripd:ripd/instance", NB_OP_CREATE,
+ NULL);
+
+ ret = nb_cli_apply_changes(vty, NULL);
if (ret == CMD_SUCCESS)
- VTY_PUSH_XPATH(RIP_NODE, changes[0].xpath);
+ VTY_PUSH_XPATH(RIP_NODE, "/frr-ripd:ripd/instance");
return ret;
}
@@ -67,15 +62,10 @@ DEFPY (no_router_rip,
"Enable a routing process\n"
"Routing Information Protocol (RIP)\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "/frr-ripd:ripd/instance",
- .operation = NB_OP_DELETE,
- .value = NULL,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "/frr-ripd:ripd/instance", NB_OP_DELETE,
+ NULL);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_router_rip(struct vty *vty, struct lyd_node *dnode,
@@ -94,15 +84,10 @@ DEFPY (rip_allow_ecmp,
NO_STR
"Allow Equal Cost MultiPath\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./allow-ecmp",
- .operation = NB_OP_MODIFY,
- .value = no ? "false" : "true",
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./allow-ecmp", NB_OP_MODIFY,
+ no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_allow_ecmp(struct vty *vty, struct lyd_node *dnode,
@@ -124,15 +109,10 @@ DEFPY (rip_default_information_originate,
"Control distribution of default route\n"
"Distribute a default route\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./default-information-originate",
- .operation = NB_OP_MODIFY,
- .value = no ? "false" : "true",
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./default-information-originate",
+ NB_OP_MODIFY, no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_default_information_originate(struct vty *vty,
@@ -154,15 +134,10 @@ DEFPY (rip_default_metric,
"Set a metric of redistribute routes\n"
"Default metric\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./default-metric",
- .operation = NB_OP_MODIFY,
- .value = default_metric_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./default-metric", NB_OP_MODIFY,
+ default_metric_str);
+
+ return nb_cli_apply_changes(vty, NULL);
}
DEFPY (no_rip_default_metric,
@@ -172,15 +147,9 @@ DEFPY (no_rip_default_metric,
"Set a metric of redistribute routes\n"
"Default metric\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./default-metric",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./default-metric", NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_default_metric(struct vty *vty, struct lyd_node *dnode,
@@ -199,15 +168,10 @@ DEFPY (rip_distance,
"Administrative distance\n"
"Distance value\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./distance/default",
- .operation = NB_OP_MODIFY,
- .value = distance_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./distance/default", NB_OP_MODIFY,
+ distance_str);
+
+ return nb_cli_apply_changes(vty, NULL);
}
DEFPY (no_rip_distance,
@@ -217,21 +181,19 @@ DEFPY (no_rip_distance,
"Administrative distance\n"
"Distance value\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./distance/default",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./distance/default", NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_distance(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
- vty_out(vty, " distance %s\n", yang_dnode_get_string(dnode, NULL));
+ if (yang_dnode_is_default(dnode, NULL))
+ vty_out(vty, " no distance\n");
+ else
+ vty_out(vty, " distance %s\n",
+ yang_dnode_get_string(dnode, NULL));
}
/*
@@ -239,57 +201,23 @@ void cli_show_rip_distance(struct vty *vty, struct lyd_node *dnode,
*/
DEFPY (rip_distance_source,
rip_distance_source_cmd,
- "distance (1-255) A.B.C.D/M$prefix [WORD$acl]",
- "Administrative distance\n"
- "Distance value\n"
- "IP source prefix\n"
- "Access list name\n")
-{
- char xpath_list[XPATH_MAXLEN];
- struct cli_config_change changes[] = {
- {
- .xpath = ".",
- .operation = NB_OP_CREATE,
- },
- {
- .xpath = "./distance",
- .operation = NB_OP_MODIFY,
- .value = distance_str,
- },
- {
- .xpath = "./access-list",
- .operation = acl ? NB_OP_MODIFY : NB_OP_DELETE,
- .value = acl,
- },
- };
-
- snprintf(xpath_list, sizeof(xpath_list),
- "./distance/source[prefix='%s']", prefix_str);
-
- return nb_cli_cfg_change(vty, xpath_list, changes, array_size(changes));
-}
-
-DEFPY (no_rip_distance_source,
- no_rip_distance_source_cmd,
- "no distance (1-255) A.B.C.D/M$prefix [WORD$acl]",
+ "[no] distance (1-255) A.B.C.D/M$prefix [WORD$acl]",
NO_STR
"Administrative distance\n"
"Distance value\n"
"IP source prefix\n"
"Access list name\n")
{
- char xpath_list[XPATH_MAXLEN];
- struct cli_config_change changes[] = {
- {
- .xpath = ".",
- .operation = NB_OP_DELETE,
- },
- };
-
- snprintf(xpath_list, sizeof(xpath_list),
- "./distance/source[prefix='%s']", prefix_str);
-
- return nb_cli_cfg_change(vty, xpath_list, changes, 1);
+ if (!no) {
+ nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
+ nb_cli_enqueue_change(vty, "./distance", NB_OP_MODIFY, NULL);
+ nb_cli_enqueue_change(vty, "./access-list",
+ acl ? NB_OP_MODIFY : NB_OP_DELETE, acl);
+ } else
+ nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL);
+
+ return nb_cli_apply_changes(vty, "./distance/source[prefix='%s']",
+ prefix_str);
}
void cli_show_rip_distance_source(struct vty *vty, struct lyd_node *dnode,
@@ -314,15 +242,10 @@ DEFPY (rip_neighbor,
"Specify a neighbor router\n"
"Neighbor address\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./explicit-neighbor",
- .operation = no ? NB_OP_DELETE : NB_OP_CREATE,
- .value = neighbor_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./explicit-neighbor",
+ no ? NB_OP_DELETE : NB_OP_CREATE, neighbor_str);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_neighbor(struct vty *vty, struct lyd_node *dnode,
@@ -341,15 +264,10 @@ DEFPY (rip_network_prefix,
"Enable routing on an IP network\n"
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./network",
- .operation = no ? NB_OP_DELETE : NB_OP_CREATE,
- .value = network_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./network",
+ no ? NB_OP_DELETE : NB_OP_CREATE, network_str);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_network_prefix(struct vty *vty, struct lyd_node *dnode,
@@ -368,15 +286,10 @@ DEFPY (rip_network_if,
"Enable routing on an IP network\n"
"Interface name\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./interface",
- .operation = no ? NB_OP_DELETE : NB_OP_CREATE,
- .value = network,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./interface",
+ no ? NB_OP_DELETE : NB_OP_CREATE, network);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_network_interface(struct vty *vty, struct lyd_node *dnode,
@@ -390,42 +303,7 @@ void cli_show_rip_network_interface(struct vty *vty, struct lyd_node *dnode,
*/
DEFPY (rip_offset_list,
rip_offset_list_cmd,
- "offset-list WORD$acl <in|out>$direction (0-16)$metric [IFNAME]",
- "Modify RIP metric\n"
- "Access-list name\n"
- "For incoming updates\n"
- "For outgoing updates\n"
- "Metric value\n"
- "Interface to match\n")
-{
- char xpath_list[XPATH_MAXLEN];
- struct cli_config_change changes[] = {
- {
- .xpath = ".",
- .operation = NB_OP_CREATE,
- },
- {
- .xpath = "./access-list",
- .operation = NB_OP_MODIFY,
- .value = acl,
- },
- {
- .xpath = "./metric",
- .operation = NB_OP_MODIFY,
- .value = metric_str,
- },
- };
-
- snprintf(xpath_list, sizeof(xpath_list),
- "./offset-list[interface='%s'][direction='%s']",
- ifname ? ifname : "*", direction);
-
- return nb_cli_cfg_change(vty, xpath_list, changes, array_size(changes));
-}
-
-DEFPY (no_rip_offset_list,
- no_rip_offset_list_cmd,
- "no offset-list WORD$acl <in|out>$direction (0-16)$metric [IFNAME]",
+ "[no] offset-list WORD$acl <in|out>$direction (0-16)$metric [IFNAME]",
NO_STR
"Modify RIP metric\n"
"Access-list name\n"
@@ -434,19 +312,17 @@ DEFPY (no_rip_offset_list,
"Metric value\n"
"Interface to match\n")
{
- char xpath_list[XPATH_MAXLEN];
- struct cli_config_change changes[] = {
- {
- .xpath = ".",
- .operation = NB_OP_DELETE,
- },
- };
-
- snprintf(xpath_list, sizeof(xpath_list),
- "./offset-list[interface='%s'][direction='%s']",
- ifname ? ifname : "*", direction);
-
- return nb_cli_cfg_change(vty, xpath_list, changes, array_size(changes));
+ if (!no) {
+ nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
+ nb_cli_enqueue_change(vty, "./access-list", NB_OP_MODIFY, acl);
+ nb_cli_enqueue_change(vty, "./metric", NB_OP_MODIFY,
+ metric_str);
+ } else
+ nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL);
+
+ return nb_cli_apply_changes(
+ vty, "./offset-list[interface='%s'][direction='%s']",
+ ifname ? ifname : "*", direction);
}
void cli_show_rip_offset_list(struct vty *vty, struct lyd_node *dnode,
@@ -475,15 +351,10 @@ DEFPY (rip_passive_default,
"Suppress routing updates on an interface\n"
"default for all interfaces\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./passive-default",
- .operation = NB_OP_MODIFY,
- .value = no ? "false" : "true",
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./passive-default", NB_OP_MODIFY,
+ no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_passive_default(struct vty *vty, struct lyd_node *dnode,
@@ -506,20 +377,12 @@ DEFPY (rip_passive_interface,
"Suppress routing updates on an interface\n"
"Interface name\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./passive-interface",
- .operation = no ? NB_OP_DELETE : NB_OP_CREATE,
- .value = ifname,
- },
- {
- .xpath = "./non-passive-interface",
- .operation = no ? NB_OP_CREATE : NB_OP_DELETE,
- .value = ifname,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./passive-interface",
+ no ? NB_OP_DELETE : NB_OP_CREATE, ifname);
+ nb_cli_enqueue_change(vty, "./non-passive-interface",
+ no ? NB_OP_CREATE : NB_OP_DELETE, ifname);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_passive_interface(struct vty *vty, struct lyd_node *dnode,
@@ -541,41 +404,7 @@ void cli_show_rip_non_passive_interface(struct vty *vty, struct lyd_node *dnode,
*/
DEFPY (rip_redistribute,
rip_redistribute_cmd,
- "redistribute " FRR_REDIST_STR_RIPD "$protocol [{metric (0-16)|route-map WORD}]",
- REDIST_STR
- FRR_REDIST_HELP_STR_RIPD
- "Metric\n"
- "Metric value\n"
- "Route map reference\n"
- "Pointer to route-map entries\n")
-{
- char xpath_list[XPATH_MAXLEN];
- struct cli_config_change changes[] = {
- {
- .xpath = ".",
- .operation = NB_OP_CREATE,
- },
- {
- .xpath = "./route-map",
- .operation = route_map ? NB_OP_MODIFY : NB_OP_DELETE,
- .value = route_map,
- },
- {
- .xpath = "./metric",
- .operation = metric_str ? NB_OP_MODIFY : NB_OP_DELETE,
- .value = metric_str,
- },
- };
-
- snprintf(xpath_list, sizeof(xpath_list),
- "./redistribute[protocol='%s']", protocol);
-
- return nb_cli_cfg_change(vty, xpath_list, changes, array_size(changes));
-}
-
-DEFPY (no_rip_redistribute,
- no_rip_redistribute_cmd,
- "no redistribute " FRR_REDIST_STR_RIPD "$protocol [{metric (0-16)|route-map WORD}]",
+ "[no] redistribute " FRR_REDIST_STR_RIPD "$protocol [{metric (0-16)|route-map WORD}]",
NO_STR
REDIST_STR
FRR_REDIST_HELP_STR_RIPD
@@ -584,18 +413,19 @@ DEFPY (no_rip_redistribute,
"Route map reference\n"
"Pointer to route-map entries\n")
{
- char xpath_list[XPATH_MAXLEN];
- struct cli_config_change changes[] = {
- {
- .xpath = ".",
- .operation = NB_OP_DELETE,
- },
- };
-
- snprintf(xpath_list, sizeof(xpath_list),
- "./redistribute[protocol='%s']", protocol);
-
- return nb_cli_cfg_change(vty, xpath_list, changes, array_size(changes));
+ if (!no) {
+ nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
+ nb_cli_enqueue_change(vty, "./route-map",
+ route_map ? NB_OP_MODIFY : NB_OP_DELETE,
+ route_map);
+ nb_cli_enqueue_change(vty, "./metric",
+ metric_str ? NB_OP_MODIFY : NB_OP_DELETE,
+ metric_str);
+ } else
+ nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL);
+
+ return nb_cli_apply_changes(vty, "./redistribute[protocol='%s']",
+ protocol);
}
void cli_show_rip_redistribute(struct vty *vty, struct lyd_node *dnode,
@@ -622,15 +452,10 @@ DEFPY (rip_route,
"RIP static route configuration\n"
"IP prefix <network>/<length>\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./static-route",
- .operation = no ? NB_OP_DELETE : NB_OP_CREATE,
- .value = route_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./static-route",
+ no ? NB_OP_DELETE : NB_OP_CREATE, route_str);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_route(struct vty *vty, struct lyd_node *dnode,
@@ -651,25 +476,14 @@ DEFPY (rip_timers,
"Routing information timeout timer. Default is 180.\n"
"Garbage collection timer. Default is 120.\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./timers/update-interval",
- .operation = NB_OP_MODIFY,
- .value = update_str,
- },
- {
- .xpath = "./timers/holddown-interval",
- .operation = NB_OP_MODIFY,
- .value = timeout_str,
- },
- {
- .xpath = "./timers/flush-interval",
- .operation = NB_OP_MODIFY,
- .value = garbage_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./update-interval", NB_OP_MODIFY,
+ update_str);
+ nb_cli_enqueue_change(vty, "./holddown-interval", NB_OP_MODIFY,
+ timeout_str);
+ nb_cli_enqueue_change(vty, "./flush-interval", NB_OP_MODIFY,
+ garbage_str);
+
+ return nb_cli_apply_changes(vty, "./timers");
}
DEFPY (no_rip_timers,
@@ -682,25 +496,11 @@ DEFPY (no_rip_timers,
"Routing information timeout timer. Default is 180.\n"
"Garbage collection timer. Default is 120.\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./timers/update-interval",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- {
- .xpath = "./timers/holddown-interval",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- {
- .xpath = "./timers/flush-interval",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./update-interval", NB_OP_MODIFY, NULL);
+ nb_cli_enqueue_change(vty, "./holddown-interval", NB_OP_MODIFY, NULL);
+ nb_cli_enqueue_change(vty, "./flush-interval", NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, "./timers");
}
void cli_show_rip_timers(struct vty *vty, struct lyd_node *dnode,
@@ -721,20 +521,11 @@ DEFPY (rip_version,
"Set routing protocol version\n"
"version\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./version/receive",
- .operation = NB_OP_MODIFY,
- .value = version_str,
- },
- {
- .xpath = "./version/send",
- .operation = NB_OP_MODIFY,
- .value = version_str,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./version/receive", NB_OP_MODIFY,
+ version_str);
+ nb_cli_enqueue_change(vty, "./version/send", NB_OP_MODIFY, version_str);
+
+ return nb_cli_apply_changes(vty, NULL);
}
DEFPY (no_rip_version,
@@ -744,18 +535,10 @@ DEFPY (no_rip_version,
"Set routing protocol version\n"
"version\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./version/receive",
- .operation = NB_OP_MODIFY,
- },
- {
- .xpath = "./version/send",
- .operation = NB_OP_MODIFY,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./version/receive", NB_OP_MODIFY, NULL);
+ nb_cli_enqueue_change(vty, "./version/send", NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, NULL);
}
void cli_show_rip_version(struct vty *vty, struct lyd_node *dnode,
@@ -790,21 +573,18 @@ DEFPY (ip_rip_split_horizon,
"Perform split horizon\n"
"With poisoned-reverse\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/split-horizon",
- .operation = NB_OP_MODIFY,
- },
- };
+ const char *value;
if (no)
- changes[0].value = "disabled";
+ value = "disabled";
else if (poisoned_reverse)
- changes[0].value = "poison-reverse";
+ value = "poison-reverse";
else
- changes[0].value = "simple";
+ value = "simple";
+
+ nb_cli_enqueue_change(vty, "./split-horizon", NB_OP_MODIFY, value);
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_split_horizon(struct vty *vty, struct lyd_node *dnode,
@@ -837,15 +617,10 @@ DEFPY (ip_rip_v2_broadcast,
"Routing Information Protocol\n"
"Send ip broadcast v2 update\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/v2-broadcast",
- .operation = NB_OP_MODIFY,
- .value = no ? "false" : "true",
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./v2-broadcast", NB_OP_MODIFY,
+ no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_v2_broadcast(struct vty *vty, struct lyd_node *dnode,
@@ -871,23 +646,20 @@ DEFPY (ip_rip_receive_version,
"RIP version 2\n"
"None\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/version-receive",
- .operation = NB_OP_MODIFY,
- },
- };
+ const char *value;
if (v1 && v2)
- changes[0].value = "both";
+ value = "both";
else if (v1)
- changes[0].value = "1";
+ value = "1";
else if (v2)
- changes[0].value = "2";
+ value = "2";
else
- changes[0].value = "none";
+ value = "none";
+
+ nb_cli_enqueue_change(vty, "./version-receive", NB_OP_MODIFY, value);
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
DEFPY (no_ip_rip_receive_version,
@@ -902,15 +674,9 @@ DEFPY (no_ip_rip_receive_version,
"RIP version 2\n"
"None\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/version-receive",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./version-receive", NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_receive_version(struct vty *vty, struct lyd_node *dnode,
@@ -949,23 +715,20 @@ DEFPY (ip_rip_send_version,
"RIP version 2\n"
"None\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/version-send",
- .operation = NB_OP_MODIFY,
- },
- };
+ const char *value;
if (v1 && v2)
- changes[0].value = "both";
+ value = "both";
else if (v1)
- changes[0].value = "1";
+ value = "1";
else if (v2)
- changes[0].value = "2";
+ value = "2";
else
- changes[0].value = "none";
+ value = "none";
+
+ nb_cli_enqueue_change(vty, "./version-send", NB_OP_MODIFY, value);
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
DEFPY (no_ip_rip_send_version,
@@ -980,15 +743,9 @@ DEFPY (no_ip_rip_send_version,
"RIP version 2\n"
"None\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/version-send",
- .operation = NB_OP_MODIFY,
- .value = NULL,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./version-send", NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_send_version(struct vty *vty, struct lyd_node *dnode,
@@ -1029,26 +786,21 @@ DEFPY (ip_rip_authentication_mode,
"Old ripd compatible\n"
"Clear text authentication\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/authentication-scheme/mode",
- .operation = NB_OP_MODIFY,
- .value = strmatch(mode, "md5") ? "md5" : "plain-text",
- },
- {
- .xpath = "./frr-ripd:rip/authentication-scheme/md5-auth-length",
- .operation = NB_OP_MODIFY,
- },
- };
+ const char *value = NULL;
if (auth_length) {
if (strmatch(auth_length, "rfc"))
- changes[1].value = "16";
+ value = "16";
else
- changes[1].value = "20";
+ value = "20";
}
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./authentication-scheme/mode", NB_OP_MODIFY,
+ strmatch(mode, "md5") ? "md5" : "plain-text");
+ nb_cli_enqueue_change(vty, "./authentication-scheme/md5-auth-length",
+ NB_OP_MODIFY, value);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
DEFPY (no_ip_rip_authentication_mode,
@@ -1065,18 +817,12 @@ DEFPY (no_ip_rip_authentication_mode,
"Old ripd compatible\n"
"Clear text authentication\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/authentication-scheme/mode",
- .operation = NB_OP_MODIFY,
- },
- {
- .xpath = "./frr-ripd:rip/authentication-scheme/md5-auth-length",
- .operation = NB_OP_MODIFY,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./authentication-scheme/mode", NB_OP_MODIFY,
+ NULL);
+ nb_cli_enqueue_change(vty, "./authentication-scheme/md5-auth-length",
+ NB_OP_MODIFY, NULL);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_authentication_scheme(struct vty *vty,
@@ -1117,14 +863,6 @@ DEFPY (ip_rip_authentication_string,
"Authentication string\n"
"Authentication string\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/authentication-password",
- .operation = NB_OP_MODIFY,
- .value = password,
- },
- };
-
if (strlen(password) > 16) {
vty_out(vty,
"%% RIPv2 authentication string must be shorter than 16\n");
@@ -1138,7 +876,10 @@ DEFPY (ip_rip_authentication_string,
return CMD_WARNING_CONFIG_FAILED;
}
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./authentication-password", NB_OP_MODIFY,
+ password);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
DEFPY (no_ip_rip_authentication_string,
@@ -1151,14 +892,10 @@ DEFPY (no_ip_rip_authentication_string,
"Authentication string\n"
"Authentication string\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/authentication-password",
- .operation = NB_OP_DELETE,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./authentication-password", NB_OP_MODIFY,
+ NULL);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_authentication_string(struct vty *vty,
@@ -1181,14 +918,6 @@ DEFPY (ip_rip_authentication_key_chain,
"Authentication key-chain\n"
"name of key-chain\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/authentication-key-chain",
- .operation = NB_OP_MODIFY,
- .value = keychain,
- },
- };
-
if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
VTY_CURR_XPATH,
"/frr-ripd:rip/authentication-password")) {
@@ -1196,7 +925,10 @@ DEFPY (ip_rip_authentication_key_chain,
return CMD_WARNING_CONFIG_FAILED;
}
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./authentication-key-chain", NB_OP_MODIFY,
+ keychain);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
DEFPY (no_ip_rip_authentication_key_chain,
@@ -1209,14 +941,10 @@ DEFPY (no_ip_rip_authentication_key_chain,
"Authentication key-chain\n"
"name of key-chain\n")
{
- struct cli_config_change changes[] = {
- {
- .xpath = "./frr-ripd:rip/authentication-key-chain",
- .operation = NB_OP_DELETE,
- },
- };
-
- return nb_cli_cfg_change(vty, NULL, changes, array_size(changes));
+ nb_cli_enqueue_change(vty, "./authentication-key-chain", NB_OP_DELETE,
+ NULL);
+
+ return nb_cli_apply_changes(vty, "./frr-ripd:rip");
}
void cli_show_ip_rip_authentication_key_chain(struct vty *vty,
@@ -1252,16 +980,13 @@ void rip_cli_init(void)
install_element(RIP_NODE, &rip_distance_cmd);
install_element(RIP_NODE, &no_rip_distance_cmd);
install_element(RIP_NODE, &rip_distance_source_cmd);
- install_element(RIP_NODE, &no_rip_distance_source_cmd);
install_element(RIP_NODE, &rip_neighbor_cmd);
install_element(RIP_NODE, &rip_network_prefix_cmd);
install_element(RIP_NODE, &rip_network_if_cmd);
install_element(RIP_NODE, &rip_offset_list_cmd);
- install_element(RIP_NODE, &no_rip_offset_list_cmd);
install_element(RIP_NODE, &rip_passive_default_cmd);
install_element(RIP_NODE, &rip_passive_interface_cmd);
install_element(RIP_NODE, &rip_redistribute_cmd);
- install_element(RIP_NODE, &no_rip_redistribute_cmd);
install_element(RIP_NODE, &rip_route_cmd);
install_element(RIP_NODE, &rip_timers_cmd);
install_element(RIP_NODE, &no_rip_timers_cmd);