summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vtysh/vtysh.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index b1c957d04..573320667 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -1344,6 +1344,27 @@ static struct cmd_node srv6_encap_node = {
.prompt = "%s(config-srv6-encap)# "
};
+static struct cmd_node srv6_sid_formats_node = {
+ .name = "srv6-formats",
+ .node = SRV6_SID_FORMATS_NODE,
+ .parent_node = SRV6_NODE,
+ .prompt = "%s(config-srv6-formats)# ",
+};
+
+static struct cmd_node srv6_sid_format_usid_f3216_node = {
+ .name = "srv6-format-usid-f3216",
+ .node = SRV6_SID_FORMAT_USID_F3216_NODE,
+ .parent_node = SRV6_SID_FORMATS_NODE,
+ .prompt = "%s(config-srv6-format)# "
+};
+
+static struct cmd_node srv6_sid_format_uncompressed_f4024_node = {
+ .name = "srv6-format-uncompressed-f4024",
+ .node = SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NODE,
+ .parent_node = SRV6_SID_FORMATS_NODE,
+ .prompt = "%s(config-srv6-format)# "
+};
+
#ifdef HAVE_PBRD
static struct cmd_node pbr_map_node = {
.name = "pbr-map",
@@ -1715,6 +1736,31 @@ DEFUNSH(VTYSH_ZEBRA, srv6_encap, srv6_encap_cmd,
return CMD_SUCCESS;
}
+DEFUNSH(VTYSH_ZEBRA, srv6_sid_formats, srv6_sid_formats_cmd, "formats",
+ "Segment Routing SRv6 SID formats\n")
+{
+ vty->node = SRV6_SID_FORMATS_NODE;
+ return CMD_SUCCESS;
+}
+
+DEFUNSH(VTYSH_ZEBRA, srv6_sid_format_f3216_usid, srv6_sid_format_f3216_usid_cmd,
+ "format usid-f3216",
+ "Configure SRv6 SID format\n"
+ "Configure the uSID f3216 format\n")
+{
+ vty->node = SRV6_SID_FORMAT_USID_F3216_NODE;
+ return CMD_SUCCESS;
+}
+
+DEFUNSH(VTYSH_ZEBRA, srv6_sid_format_f4024_uncompressed, srv6_sid_format_f4024_uncompressed_cmd,
+ "format uncompressed-f4024",
+ "Configure SRv6 SID format\n"
+ "Configure the uncompressed f4024 format\n")
+{
+ vty->node = SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NODE;
+ return CMD_SUCCESS;
+}
+
#ifdef HAVE_BGPD
DEFUNSH(VTYSH_BGPD, router_bgp, router_bgp_cmd,
"router bgp [ASNUM [<view|vrf> VIEWVRFNAME] [as-notation <dot|dot+|plain>]]",
@@ -2515,6 +2561,23 @@ DEFUNSH(VTYSH_ZEBRA, exit_srv6_encap, exit_srv6_encap_cmd, "exit",
return CMD_SUCCESS;
}
+DEFUNSH(VTYSH_ZEBRA, exit_srv6_sid_formats, exit_srv6_sid_formats_cmd, "exit",
+ "Exit from SRv6 SID formats configuration mode\n")
+{
+ if (vty->node == SRV6_SID_FORMATS_NODE)
+ vty->node = SRV6_NODE;
+ return CMD_SUCCESS;
+}
+
+DEFUNSH(VTYSH_ZEBRA, exit_srv6_sid_format, exit_srv6_sid_format_cmd,
+ "exit", "Exit from SRv6 SID format configuration mode\n")
+{
+ if (vty->node == SRV6_SID_FORMAT_USID_F3216_NODE ||
+ vty->node == SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NODE)
+ vty->node = SRV6_SID_FORMATS_NODE;
+ return CMD_SUCCESS;
+}
+
#ifdef HAVE_RIPD
DEFUNSH(VTYSH_MGMTD, vtysh_exit_ripd, vtysh_exit_ripd_cmd, "exit",
"Exit current mode and down to previous mode\n")
@@ -5304,6 +5367,7 @@ void vtysh_init_vty(void)
install_node(&srv6_node);
install_element(SEGMENT_ROUTING_NODE, &srv6_cmd);
install_element(SRV6_NODE, &srv6_locators_cmd);
+ install_element(SRV6_NODE, &srv6_sid_formats_cmd);
install_element(SRV6_NODE, &exit_srv6_config_cmd);
install_element(SRV6_NODE, &vtysh_end_all_cmd);
install_element(SRV6_NODE, &srv6_encap_cmd);
@@ -5321,6 +5385,24 @@ void vtysh_init_vty(void)
install_element(SRV6_ENCAP_NODE, &exit_srv6_encap_cmd);
install_element(SRV6_ENCAP_NODE, &vtysh_end_all_cmd);
+ install_node(&srv6_sid_formats_node);
+ install_element(SRV6_SID_FORMATS_NODE, &srv6_sid_format_f3216_usid_cmd);
+ install_element(SRV6_SID_FORMATS_NODE,
+ &srv6_sid_format_f4024_uncompressed_cmd);
+ install_element(SRV6_SID_FORMATS_NODE, &exit_srv6_sid_formats_cmd);
+ install_element(SRV6_SID_FORMATS_NODE, &vtysh_end_all_cmd);
+
+ install_node(&srv6_sid_format_usid_f3216_node);
+ install_element(SRV6_SID_FORMAT_USID_F3216_NODE,
+ &exit_srv6_sid_format_cmd);
+ install_element(SRV6_SID_FORMAT_USID_F3216_NODE, &vtysh_end_all_cmd);
+
+ install_node(&srv6_sid_format_uncompressed_f4024_node);
+ install_element(SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NODE,
+ &exit_srv6_sid_format_cmd);
+ install_element(SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NODE,
+ &vtysh_end_all_cmd);
+
install_element(ENABLE_NODE, &vtysh_show_running_config_cmd);
install_element(ENABLE_NODE, &vtysh_copy_running_config_cmd);
install_element(ENABLE_NODE, &vtysh_copy_to_running_cmd);