forked from Mirror/frr
ripd: retrofit the 'version' command to the new northbound model
Trivial conversion. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
b745780b5f
commit
90eff9dafe
|
@ -712,6 +712,72 @@ void cli_show_rip_timers(struct vty *vty, struct lyd_node *dnode,
|
||||||
yang_dnode_get_string(dnode, "./flush-interval"));
|
yang_dnode_get_string(dnode, "./flush-interval"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath: /frr-ripd:ripd/instance/version
|
||||||
|
*/
|
||||||
|
DEFPY (rip_version,
|
||||||
|
rip_version_cmd,
|
||||||
|
"version (1-2)",
|
||||||
|
"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));
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFPY (no_rip_version,
|
||||||
|
no_rip_version_cmd,
|
||||||
|
"no version [(1-2)]",
|
||||||
|
NO_STR
|
||||||
|
"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));
|
||||||
|
}
|
||||||
|
|
||||||
|
void cli_show_rip_version(struct vty *vty, struct lyd_node *dnode,
|
||||||
|
bool show_defaults)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* We have only one "version" command and three possible combinations of
|
||||||
|
* send/receive values.
|
||||||
|
*/
|
||||||
|
switch (yang_dnode_get_enum(dnode, "./receive")) {
|
||||||
|
case RI_RIP_VERSION_1:
|
||||||
|
vty_out(vty, " version 1\n");
|
||||||
|
break;
|
||||||
|
case RI_RIP_VERSION_2:
|
||||||
|
vty_out(vty, " version 2\n");
|
||||||
|
break;
|
||||||
|
case RI_RIP_VERSION_1_AND_2:
|
||||||
|
vty_out(vty, " no version\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void rip_cli_init(void)
|
void rip_cli_init(void)
|
||||||
{
|
{
|
||||||
install_element(CONFIG_NODE, &router_rip_cmd);
|
install_element(CONFIG_NODE, &router_rip_cmd);
|
||||||
|
@ -737,4 +803,6 @@ void rip_cli_init(void)
|
||||||
install_element(RIP_NODE, &rip_route_cmd);
|
install_element(RIP_NODE, &rip_route_cmd);
|
||||||
install_element(RIP_NODE, &rip_timers_cmd);
|
install_element(RIP_NODE, &rip_timers_cmd);
|
||||||
install_element(RIP_NODE, &no_rip_timers_cmd);
|
install_element(RIP_NODE, &no_rip_timers_cmd);
|
||||||
|
install_element(RIP_NODE, &rip_version_cmd);
|
||||||
|
install_element(RIP_NODE, &no_rip_version_cmd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,5 +59,7 @@ extern void cli_show_rip_route(struct vty *vty, struct lyd_node *dnode,
|
||||||
bool show_defaults);
|
bool show_defaults);
|
||||||
extern void cli_show_rip_timers(struct vty *vty, struct lyd_node *dnode,
|
extern void cli_show_rip_timers(struct vty *vty, struct lyd_node *dnode,
|
||||||
bool show_defaults);
|
bool show_defaults);
|
||||||
|
extern void cli_show_rip_version(struct vty *vty, struct lyd_node *dnode,
|
||||||
|
bool show_defaults);
|
||||||
|
|
||||||
#endif /* _FRR_RIP_CLI_H_ */
|
#endif /* _FRR_RIP_CLI_H_ */
|
||||||
|
|
|
@ -755,7 +755,11 @@ static int ripd_instance_version_receive_modify(enum nb_event event,
|
||||||
const struct lyd_node *dnode,
|
const struct lyd_node *dnode,
|
||||||
union nb_resource *resource)
|
union nb_resource *resource)
|
||||||
{
|
{
|
||||||
/* TODO: implement me. */
|
if (event != NB_EV_APPLY)
|
||||||
|
return NB_OK;
|
||||||
|
|
||||||
|
rip->version_recv = yang_dnode_get_enum(dnode, NULL);
|
||||||
|
|
||||||
return NB_OK;
|
return NB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -766,7 +770,11 @@ static int ripd_instance_version_send_modify(enum nb_event event,
|
||||||
const struct lyd_node *dnode,
|
const struct lyd_node *dnode,
|
||||||
union nb_resource *resource)
|
union nb_resource *resource)
|
||||||
{
|
{
|
||||||
/* TODO: implement me. */
|
if (event != NB_EV_APPLY)
|
||||||
|
return NB_OK;
|
||||||
|
|
||||||
|
rip->version_send = yang_dnode_get_enum(dnode, NULL);
|
||||||
|
|
||||||
return NB_OK;
|
return NB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1166,6 +1174,10 @@ const struct frr_yang_module_info frr_ripd_info = {
|
||||||
.xpath = "/frr-ripd:ripd/instance/timers/update-interval",
|
.xpath = "/frr-ripd:ripd/instance/timers/update-interval",
|
||||||
.cbs.modify = ripd_instance_timers_update_interval_modify,
|
.cbs.modify = ripd_instance_timers_update_interval_modify,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-ripd:ripd/instance/version",
|
||||||
|
.cbs.cli_show = cli_show_rip_version,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.xpath = "/frr-ripd:ripd/instance/version/receive",
|
.xpath = "/frr-ripd:ripd/instance/version/receive",
|
||||||
.cbs.modify = ripd_instance_version_receive_modify,
|
.cbs.modify = ripd_instance_version_receive_modify,
|
||||||
|
|
41
ripd/ripd.c
41
ripd/ripd.c
|
@ -2799,40 +2799,6 @@ void rip_event(enum rip_event event, int sock)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (rip_version,
|
|
||||||
rip_version_cmd,
|
|
||||||
"version (1-2)",
|
|
||||||
"Set routing protocol version\n"
|
|
||||||
"version\n")
|
|
||||||
{
|
|
||||||
int idx_number = 1;
|
|
||||||
int version;
|
|
||||||
|
|
||||||
version = atoi(argv[idx_number]->arg);
|
|
||||||
if (version != RIPv1 && version != RIPv2) {
|
|
||||||
vty_out(vty, "invalid rip version %d\n", version);
|
|
||||||
return CMD_WARNING_CONFIG_FAILED;
|
|
||||||
}
|
|
||||||
rip->version_send = version;
|
|
||||||
rip->version_recv = version;
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFUN (no_rip_version,
|
|
||||||
no_rip_version_cmd,
|
|
||||||
"no version [(1-2)]",
|
|
||||||
NO_STR
|
|
||||||
"Set routing protocol version\n"
|
|
||||||
"Version\n")
|
|
||||||
{
|
|
||||||
/* Set RIP version to the default. */
|
|
||||||
rip->version_send = RI_RIP_VERSION_2;
|
|
||||||
rip->version_recv = RI_RIP_VERSION_1_AND_2;
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void
|
static void
|
||||||
rip_update_default_metric (void)
|
rip_update_default_metric (void)
|
||||||
|
@ -3247,11 +3213,6 @@ static int config_write_rip(struct vty *vty)
|
||||||
|
|
||||||
nb_cli_show_dnode_cmds(vty, dnode, false);
|
nb_cli_show_dnode_cmds(vty, dnode, false);
|
||||||
|
|
||||||
/* RIP version statement. Default is RIP version 2. */
|
|
||||||
if (rip->version_send != RI_RIP_VERSION_2
|
|
||||||
|| rip->version_recv != RI_RIP_VERSION_1_AND_2)
|
|
||||||
vty_out(vty, " version %d\n", rip->version_send);
|
|
||||||
|
|
||||||
/* Distribute configuration. */
|
/* Distribute configuration. */
|
||||||
write += config_write_distribute(vty);
|
write += config_write_distribute(vty);
|
||||||
|
|
||||||
|
@ -3520,8 +3481,6 @@ void rip_init(void)
|
||||||
install_element(VIEW_NODE, &show_ip_rip_status_cmd);
|
install_element(VIEW_NODE, &show_ip_rip_status_cmd);
|
||||||
|
|
||||||
install_default(RIP_NODE);
|
install_default(RIP_NODE);
|
||||||
install_element(RIP_NODE, &rip_version_cmd);
|
|
||||||
install_element(RIP_NODE, &no_rip_version_cmd);
|
|
||||||
|
|
||||||
/* Debug related init. */
|
/* Debug related init. */
|
||||||
rip_debug_init();
|
rip_debug_init();
|
||||||
|
|
Loading…
Reference in a new issue