]> git.puffer.fish Git - mirror/frr.git/commitdiff
staticd: Add `no` form for `static-sids` command
authorCarmine Scarpitta <cscarpit@cisco.com>
Wed, 26 Feb 2025 14:34:19 +0000 (15:34 +0100)
committerCarmine Scarpitta <cscarpit@cisco.com>
Thu, 27 Feb 2025 11:17:26 +0000 (12:17 +0100)
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>
staticd/static_nb.h
staticd/static_vty.c

index 282c9dcf11c5f377af14d0a037203cba4a17ada0..6106f90018d3a62c536edf9f85bcda84ddab21d1 100644 (file)
@@ -184,6 +184,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/"                                                                            \
index dd57bfa173588966be7f9d366202d3c9d75b996b..92965681e353525ec770490bf8452cf8b0e97691 100644 (file)
@@ -1190,10 +1190,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;
 }