{
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;
}
"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,
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,
"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,
"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,
"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,
"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,
"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,
*/
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,
"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,
"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,
"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,
*/
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"
"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,
"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,
"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,
*/
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
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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");
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,
"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,
"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")) {
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,
"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,
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);