summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarmine Scarpitta <cscarpit@cisco.com>2025-02-26 15:34:19 +0100
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2025-02-28 14:16:15 +0000
commitc528ba2ea5b271c50fa899a5449395ae6dc05815 (patch)
treee14923e346043d105142e4a82e543bc69aa90ad5
parentb44c54889cca02abf5b71ff67722f928efefc7a6 (diff)
staticd: Add `no` form for `static-sids` command
Currently, when the user tries to delete all static SIDs with the `no static-sids` command, staticd returns an error. ``` router# config router(config)# segment-routing router(sr)# srv6 router(srv6)# no static-sids % Unknown command: no static-sids ``` The problem is the `static-sids` command does not support the `no` form. This PR enables the `no` form for the `static-sids` command. ``` router# config router(config)# segment-routing router(sr)# srv6 router(srv6)# no static-sids ``` Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com> (cherry picked from commit ab7a7541a669ebe586d8de8015e7eb68c0365c2b)
-rw-r--r--staticd/static_nb.h4
-rw-r--r--staticd/static_vty.c16
2 files changed, 18 insertions, 2 deletions
diff --git a/staticd/static_nb.h b/staticd/static_nb.h
index aa11f34021..4902327b95 100644
--- a/staticd/static_nb.h
+++ b/staticd/static_nb.h
@@ -172,6 +172,10 @@ int routing_control_plane_protocols_name_validate(
"frr-staticd:staticd/segment-routing/srv6"
/* srv6/static-sids */
+#define FRR_STATIC_SRV6_STATIC_SIDS_XPATH \
+ FRR_STATIC_SRV6_INFO_KEY_XPATH \
+ "/static-sids"
+
#define FRR_STATIC_SRV6_SID_KEY_XPATH \
FRR_STATIC_SRV6_INFO_KEY_XPATH \
"/static-sids/" \
diff --git a/staticd/static_vty.c b/staticd/static_vty.c
index a6bf53e523..13a61e52c7 100644
--- a/staticd/static_vty.c
+++ b/staticd/static_vty.c
@@ -1174,10 +1174,22 @@ DEFUN_YANG_NOSH (no_static_srv6, no_static_srv6_cmd,
return nb_cli_apply_changes(vty, "%s", xpath);
}
-DEFPY_NOSH (static_srv6_sids, static_srv6_sids_cmd,
- "static-sids",
+DEFPY_YANG_NOSH (static_srv6_sids, static_srv6_sids_cmd,
+ "[no] static-sids",
+ NO_STR
"Segment Routing SRv6 SIDs\n")
{
+ char xpath[XPATH_MAXLEN];
+
+ if (no) {
+ snprintf(xpath, sizeof(xpath), FRR_STATIC_SRV6_STATIC_SIDS_XPATH,
+ "frr-staticd:staticd", "staticd", VRF_DEFAULT_NAME);
+
+ nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
+
+ return nb_cli_apply_changes(vty, "%s", xpath);
+ }
+
VTY_PUSH_CONTEXT_NULL(SRV6_SIDS_NODE);
return CMD_SUCCESS;
}