]> git.puffer.fish Git - matthieu/frr.git/commitdiff
vtysh: CLI to override default SID format config
authorCarmine Scarpitta <cscarpit@cisco.com>
Tue, 26 Mar 2024 07:53:17 +0000 (08:53 +0100)
committerCarmine Scarpitta <cscarpit@cisco.com>
Thu, 13 Jun 2024 12:54:16 +0000 (14:54 +0200)
Add CLI commands to support overriding default configuration of the SID
format.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
vtysh/vtysh.c

index b1c957d043a3f9e7c1b81243c5a74c60249944ba..573320667c33031b4e8ed671c2aff51baf5e9db4 100644 (file)
@@ -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);