From: Carmine Scarpitta Date: Wed, 26 Feb 2025 14:34:19 +0000 (+0100) Subject: staticd: Add `no` form for `static-sids` command X-Git-Tag: docker/10.3.0~11^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=c528ba2ea5b271c50fa899a5449395ae6dc05815;p=matthieu%2Ffrr.git 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 (cherry picked from commit ab7a7541a669ebe586d8de8015e7eb68c0365c2b) --- 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; }