summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2022-11-28 11:36:34 +0100
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-08-04 09:29:16 +0200
commitc57ff2d123b822f6257c1ba4926bf7f7a51292f8 (patch)
tree5d6afc6f1e1ef3cf14a92574bc6b913db31252a2
parenteb918dbd25cef3d721c59e65917371806e1019d3 (diff)
isisd: Add CLI command to enable SRv6
r1# conf r1(config)# router isis <area-tag> r1(config-router)# segment-routing srv6 Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
-rw-r--r--isisd/isis_cli.c27
-rw-r--r--isisd/isisd.c10
-rw-r--r--lib/command.h1
3 files changed, 38 insertions, 0 deletions
diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c
index b455352699..a567953faf 100644
--- a/isisd/isis_cli.c
+++ b/isisd/isis_cli.c
@@ -2037,6 +2037,31 @@ void cli_show_isis_prefix_sid_algorithm(struct vty *vty,
vty_out(vty, "\n");
}
+/*
+ * XPath: /frr-isisd:isis/instance/segment-routing-srv6/enabled
+ */
+DEFPY_YANG_NOSH (isis_srv6_enable,
+ isis_srv6_enable_cmd,
+ "segment-routing srv6",
+ SR_STR
+ "Enable Segment Routing over IPv6 (SRv6)\n")
+{
+ int ret;
+ char xpath[XPATH_MAXLEN + 37];
+
+ snprintf(xpath, sizeof(xpath), "%s/segment-routing-srv6",
+ VTY_CURR_XPATH);
+
+ nb_cli_enqueue_change(vty, "./segment-routing-srv6/enabled",
+ NB_OP_MODIFY, "true");
+
+ ret = nb_cli_apply_changes(vty, NULL);
+ if (ret == CMD_SUCCESS)
+ VTY_PUSH_XPATH(ISIS_SRV6_NODE, xpath);
+
+ return ret;
+}
+
void cli_show_isis_srv6_enabled(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults)
{
@@ -3815,6 +3840,8 @@ void isis_cli_init(void)
install_element(ISIS_NODE, &isis_frr_remote_lfa_plist_cmd);
install_element(ISIS_NODE, &no_isis_frr_remote_lfa_plist_cmd);
+ install_element(ISIS_NODE, &isis_srv6_enable_cmd);
+
install_element(INTERFACE_NODE, &isis_passive_cmd);
install_element(INTERFACE_NODE, &isis_passwd_cmd);
diff --git a/isisd/isisd.c b/isisd/isisd.c
index dfb70943c3..f9c12bc7c4 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -3832,6 +3832,13 @@ struct cmd_node isis_flex_algo_node = {
};
#endif /* ifdnef FABRICD */
+struct cmd_node isis_srv6_node = {
+ .name = "isis-srv6",
+ .node = ISIS_SRV6_NODE,
+ .parent_node = ISIS_NODE,
+ .prompt = "%s(config-router-srv6)# ",
+};
+
void isis_init(void)
{
/* Install IS-IS top node */
@@ -3944,5 +3951,8 @@ void isis_init(void)
install_default(ISIS_FLEX_ALGO_NODE);
#endif /* ifdnef FABRICD */
+ install_node(&isis_srv6_node);
+ install_default(ISIS_SRV6_NODE);
+
spf_backoff_cmd_init();
}
diff --git a/lib/command.h b/lib/command.h
index 3167c652c5..a0ff42b107 100644
--- a/lib/command.h
+++ b/lib/command.h
@@ -172,6 +172,7 @@ enum node_type {
OPENFABRIC_NODE, /* OpenFabric router configuration node */
VRRP_NODE, /* VRRP node */
BMP_NODE, /* BMP config under router bgp */
+ ISIS_SRV6_NODE, /* ISIS SRv6 node */
NODE_TYPE_MAX, /* maximum */
};
/* clang-format on */