]> git.puffer.fish Git - mirror/frr.git/commitdiff
mgmtd, staticd: output staticd configuration from mgmtd 14838/head
authorIgor Ryzhov <iryzhov@nfware.com>
Mon, 20 Nov 2023 13:02:29 +0000 (14:02 +0100)
committerIgor Ryzhov <iryzhov@nfware.com>
Tue, 21 Nov 2023 11:28:40 +0000 (13:28 +0200)
As mgmtd now implements vty for staticd, it's logical to output the
configuration from there as well. Fully-converted backend daemons should
not handle vty commands at all.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
mgmtd/mgmt_main.c
staticd/static_nb.c
staticd/static_vrf.c
staticd/static_vty.c
staticd/static_vty.h

index 39362fa74a835a593b9727c79e933d9987d6c466..b58b93c71d1742e785f8eb65ffd57fa38cf502c9 100644 (file)
@@ -185,6 +185,10 @@ static void mgmt_vrf_terminate(void)
        vrf_terminate();
 }
 
+#ifdef HAVE_STATICD
+extern const struct frr_yang_module_info frr_staticd_info;
+#endif
+
 /*
  * List of YANG modules to be loaded in the process context of
  * MGMTd.
@@ -201,11 +205,10 @@ static const struct frr_yang_module_info *const mgmt_yang_modules[] = {
 /*
  * YANG module info supported by backend clients get added here.
  * NOTE: Always set .ignore_cbs true for to avoid validating
- * backend northbound callbacks during loading.
+ * backend configuration northbound callbacks during loading.
  */
 #ifdef HAVE_STATICD
-       &(struct frr_yang_module_info){.name = "frr-staticd",
-                                      .ignore_cbs = true},
+       &frr_staticd_info,
 #endif
 };
 
index 1c69a58035b9b499e466dee178758d4b09b764cc..e6aa71a77b48afc61950fb1c83afa142937a82dc 100644 (file)
 const struct frr_yang_module_info frr_staticd_info = {
        .name = "frr-staticd",
        .nodes = {
-               {
-                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd",
-                       .cbs = {
-                               .cli_show = static_cli_show,
-                               .cli_show_end = static_cli_show_end,
-                       }
-               },
                {
                        .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list",
                        .cbs = {
                                .create = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_create,
                                .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_destroy,
-                               .cli_cmp = static_route_list_cli_cmp,
                        }
                },
                {
@@ -35,7 +27,6 @@ const struct frr_yang_module_info frr_staticd_info = {
                        .cbs = {
                                .create = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_create,
                                .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_destroy,
-                               .cli_cmp = static_path_list_cli_cmp,
                        }
                },
                {
@@ -51,8 +42,6 @@ const struct frr_yang_module_info frr_staticd_info = {
                                .create = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_create,
                                .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_destroy,
                                .pre_validate = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_pre_validate,
-                               .cli_show = static_nexthop_cli_show,
-                               .cli_cmp = static_nexthop_cli_cmp,
                        }
                },
                {
@@ -150,7 +139,6 @@ const struct frr_yang_module_info frr_staticd_info = {
                        .cbs = {
                                .create = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_create,
                                .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_destroy,
-                               .cli_cmp = static_src_list_cli_cmp,
                        }
                },
                {
@@ -158,7 +146,6 @@ const struct frr_yang_module_info frr_staticd_info = {
                        .cbs = {
                                .create = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_create,
                                .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_destroy,
-                               .cli_cmp = static_path_list_cli_cmp,
                        }
                },
                {
@@ -174,8 +161,6 @@ const struct frr_yang_module_info frr_staticd_info = {
                                .create = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_create,
                                .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_destroy,
                                .pre_validate = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_pre_validate,
-                               .cli_show = static_src_nexthop_cli_show,
-                               .cli_cmp = static_nexthop_cli_cmp,
                        }
                },
                {
index a67dce200fcf63e1df6755d89219f36dc46b0397..7a0ff01d0494dbabb4ce1bac9272b7c488399a6d 100644 (file)
@@ -124,26 +124,12 @@ struct static_vrf *static_vrf_lookup_by_name(const char *name)
        return NULL;
 }
 
-static int static_vrf_config_write(struct vty *vty)
-{
-       struct lyd_node *dnode;
-       int written = 0;
-
-       dnode = yang_dnode_get(running_config->dnode, "/frr-routing:routing");
-       if (dnode) {
-               nb_cli_show_dnode_cmds(vty, dnode, false);
-               written = 1;
-       }
-
-       return written;
-}
-
 void static_vrf_init(void)
 {
        vrf_init(static_vrf_new, static_vrf_enable, static_vrf_disable,
                 static_vrf_delete);
 
-       vrf_cmd_init(static_vrf_config_write);
+       vrf_cmd_init(NULL);
 }
 
 void static_vrf_terminate(void)
index c2c260cfba1ccef083e428518d55ea7518f1829f..d9d4554c7363346a39e58b6aa964cb3b78a4a9a9 100644 (file)
@@ -1234,8 +1234,10 @@ DEFPY_YANG(ipv6_route_vrf, ipv6_route_vrf_cmd,
        return static_route_nb_run(vty, &args);
 }
 
-void static_cli_show(struct vty *vty, const struct lyd_node *dnode,
-                    bool show_defaults)
+#ifdef INCLUDE_MGMTD_CMDDEFS_ONLY
+
+static void static_cli_show(struct vty *vty, const struct lyd_node *dnode,
+                           bool show_defaults)
 {
        const char *vrf;
 
@@ -1244,7 +1246,7 @@ void static_cli_show(struct vty *vty, const struct lyd_node *dnode,
                vty_out(vty, "vrf %s\n", vrf);
 }
 
-void static_cli_show_end(struct vty *vty, const struct lyd_node *dnode)
+static void static_cli_show_end(struct vty *vty, const struct lyd_node *dnode)
 {
        const char *vrf;
 
@@ -1444,8 +1446,9 @@ static void nexthop_cli_show(struct vty *vty, const struct lyd_node *route,
        vty_out(vty, "\n");
 }
 
-void static_nexthop_cli_show(struct vty *vty, const struct lyd_node *dnode,
-                            bool show_defaults)
+static void static_nexthop_cli_show(struct vty *vty,
+                                   const struct lyd_node *dnode,
+                                   bool show_defaults)
 {
        const struct lyd_node *path = yang_dnode_get_parent(dnode, "path-list");
        const struct lyd_node *route =
@@ -1454,8 +1457,9 @@ void static_nexthop_cli_show(struct vty *vty, const struct lyd_node *dnode,
        nexthop_cli_show(vty, route, NULL, path, dnode, show_defaults);
 }
 
-void static_src_nexthop_cli_show(struct vty *vty, const struct lyd_node *dnode,
-                                bool show_defaults)
+static void static_src_nexthop_cli_show(struct vty *vty,
+                                       const struct lyd_node *dnode,
+                                       bool show_defaults)
 {
        const struct lyd_node *path = yang_dnode_get_parent(dnode, "path-list");
        const struct lyd_node *src = yang_dnode_get_parent(path, "src-list");
@@ -1464,8 +1468,8 @@ void static_src_nexthop_cli_show(struct vty *vty, const struct lyd_node *dnode,
        nexthop_cli_show(vty, route, src, path, dnode, show_defaults);
 }
 
-int static_nexthop_cli_cmp(const struct lyd_node *dnode1,
-                          const struct lyd_node *dnode2)
+static int static_nexthop_cli_cmp(const struct lyd_node *dnode1,
+                                 const struct lyd_node *dnode2)
 {
        enum static_nh_type nh_type1, nh_type2;
        struct prefix prefix1, prefix2;
@@ -1519,8 +1523,8 @@ int static_nexthop_cli_cmp(const struct lyd_node *dnode1,
        return if_cmp_name_func(vrf1, vrf2);
 }
 
-int static_route_list_cli_cmp(const struct lyd_node *dnode1,
-                             const struct lyd_node *dnode2)
+static int static_route_list_cli_cmp(const struct lyd_node *dnode1,
+                                    const struct lyd_node *dnode2)
 {
        const char *afi_safi1, *afi_safi2;
        afi_t afi1, afi2;
@@ -1545,8 +1549,8 @@ int static_route_list_cli_cmp(const struct lyd_node *dnode1,
        return prefix_cmp(&prefix1, &prefix2);
 }
 
-int static_src_list_cli_cmp(const struct lyd_node *dnode1,
-                           const struct lyd_node *dnode2)
+static int static_src_list_cli_cmp(const struct lyd_node *dnode1,
+                                  const struct lyd_node *dnode2)
 {
        struct prefix prefix1, prefix2;
 
@@ -1556,8 +1560,8 @@ int static_src_list_cli_cmp(const struct lyd_node *dnode1,
        return prefix_cmp(&prefix1, &prefix2);
 }
 
-int static_path_list_cli_cmp(const struct lyd_node *dnode1,
-                            const struct lyd_node *dnode2)
+static int static_path_list_cli_cmp(const struct lyd_node *dnode1,
+                                   const struct lyd_node *dnode2)
 {
        uint32_t table_id1, table_id2;
        uint8_t distance1, distance2;
@@ -1574,7 +1578,62 @@ int static_path_list_cli_cmp(const struct lyd_node *dnode1,
        return (int)distance1 - (int)distance2;
 }
 
-#ifndef INCLUDE_MGMTD_CMDDEFS_ONLY
+const struct frr_yang_module_info frr_staticd_info = {
+       .name = "frr-staticd",
+       .ignore_cbs = true,
+       .nodes = {
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd",
+                       .cbs = {
+                               .cli_show = static_cli_show,
+                               .cli_show_end = static_cli_show_end,
+                       }
+               },
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list",
+                       .cbs = {
+                               .cli_cmp = static_route_list_cli_cmp,
+                       }
+               },
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/path-list",
+                       .cbs = {
+                               .cli_cmp = static_path_list_cli_cmp,
+                       }
+               },
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/path-list/frr-nexthops/nexthop",
+                       .cbs = {
+                               .cli_show = static_nexthop_cli_show,
+                               .cli_cmp = static_nexthop_cli_cmp,
+                       }
+               },
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/src-list",
+                       .cbs = {
+                               .cli_cmp = static_src_list_cli_cmp,
+                       }
+               },
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/src-list/path-list",
+                       .cbs = {
+                               .cli_cmp = static_path_list_cli_cmp,
+                       }
+               },
+               {
+                       .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/src-list/path-list/frr-nexthops/nexthop",
+                       .cbs = {
+                               .cli_show = static_src_nexthop_cli_show,
+                               .cli_cmp = static_nexthop_cli_cmp,
+                       }
+               },
+               {
+                       .xpath = NULL,
+               },
+       }
+};
+
+#else /* ifdef INCLUDE_MGMTD_CMDDEFS_ONLY */
 
 DEFPY_YANG(debug_staticd, debug_staticd_cmd,
           "[no] debug static [{events$events|route$route|bfd$bfd}]",
index 77e52b5bdf8621395167dcffeaa6e2fed8e67817..4b4cc1c3bf3925352a7cde726a9249b037d7e8db 100644 (file)
 extern "C" {
 #endif
 
-void static_cli_show(struct vty *vty, const struct lyd_node *dnode,
-                    bool show_defaults);
-void static_cli_show_end(struct vty *vty, const struct lyd_node *dnode);
-void static_nexthop_cli_show(struct vty *vty, const struct lyd_node *dnode,
-                            bool show_defaults);
-void static_src_nexthop_cli_show(struct vty *vty, const struct lyd_node *dnode,
-                                bool show_defaults);
-int static_nexthop_cli_cmp(const struct lyd_node *dnode1,
-                          const struct lyd_node *dnode2);
-int static_route_list_cli_cmp(const struct lyd_node *dnode1,
-                             const struct lyd_node *dnode2);
-int static_src_list_cli_cmp(const struct lyd_node *dnode1,
-                           const struct lyd_node *dnode2);
-int static_path_list_cli_cmp(const struct lyd_node *dnode1,
-                            const struct lyd_node *dnode2);
-
 void static_vty_init(void);
 
 #ifdef __cplusplus