]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: mgmtd: fix debug cli commands and memleaks
authorChristian Hopps <chopps@labn.net>
Sat, 11 Nov 2023 18:21:17 +0000 (19:21 +0100)
committerChristian Hopps <chopps@labn.net>
Sat, 11 Nov 2023 18:25:03 +0000 (19:25 +0100)
- Cannot have 2 cmd_node's with same .node number. Install the mgmtd
client library debug nodes (client frontend and client backend) using
new unique node numbers. Fixes memleaks.

- Fix "debug mgmt client backend" to generate correct config (and not
for frontend).

Signed-off-by: Christian Hopps <chopps@labn.net>
lib/command.h
lib/mgmt_be_client.c
lib/mgmt_fe_client.c
mgmtd/mgmt_vty.c
vtysh/vtysh_config.c

index 718d34b007cd659647bd46d55a1a79603036fc78..0da838feb19b638cf2e37d2277b36be5b3bafc5d 100644 (file)
@@ -88,6 +88,8 @@ enum node_type {
        DEBUG_VNC_NODE,          /* Debug VNC node. */
        RMAP_DEBUG_NODE,         /* Route-map debug node */
        RESOLVER_DEBUG_NODE,     /* Resolver debug node */
+       MGMT_BE_DEBUG_NODE,      /* mgmtd backend-client debug node */
+       MGMT_FE_DEBUG_NODE,      /* mgmtd frontend-client debug node */
        AAA_NODE,                /* AAA node. */
        EXTLOG_NODE,             /* RFC5424 & co. extended syslog */
        KEYCHAIN_NODE,           /* Key-chain node. */
index 762ace13617958ccc947d852c99c4a350c2579cc..d1651dde1d5e2c692ba7f17f6d32fa04833127f7 100644 (file)
@@ -880,7 +880,7 @@ static void mgmt_debug_client_be_set_all(uint32_t flags, bool set)
 static int mgmt_debug_be_client_config_write(struct vty *vty)
 {
        if (DEBUG_MODE_CHECK(&mgmt_dbg_be_client, DEBUG_MODE_CONF))
-               vty_out(vty, "debug mgmt client frontend\n");
+               vty_out(vty, "debug mgmt client backend\n");
 
        return 1;
 }
@@ -895,8 +895,8 @@ static struct debug_callbacks mgmt_dbg_be_client_cbs = {
        .debug_set_all = mgmt_debug_client_be_set_all};
 
 static struct cmd_node mgmt_dbg_node = {
-       .name = "mgmt backend client",
-       .node = DEBUG_NODE,
+       .name = "debug mgmt client backend",
+       .node = MGMT_BE_DEBUG_NODE,
        .prompt = "",
        .config_write = mgmt_debug_be_client_config_write,
 };
index 7e42e1c09e5e21964cfaafacff5f3ff467c9af89..aab553049dfbf312c4be942bd82a4c7aeaf3d995 100644 (file)
@@ -580,8 +580,8 @@ static struct debug_callbacks mgmt_dbg_fe_client_cbs = {
        .debug_set_all = mgmt_debug_client_fe_set_all};
 
 static struct cmd_node mgmt_dbg_node = {
-       .name = "mgmt client frontend",
-       .node = DEBUG_NODE,
+       .name = "debug mgmt client frontend",
+       .node = MGMT_FE_DEBUG_NODE,
        .prompt = "",
        .config_write = mgmt_debug_fe_client_config_write,
 };
index e7d69667103b704f2ddd85d880c9df5582a37c86..9591d4613266ead3c6e12aea8e6fcf8264d985b0 100644 (file)
@@ -379,7 +379,7 @@ DEFPY(mgmt_rollback,
 
 int config_write_mgmt_debug(struct vty *vty);
 static struct cmd_node debug_node = {
-       .name = "debug",
+       .name = "mgmt debug",
        .node = DEBUG_NODE,
        .prompt = "",
        .config_write = config_write_mgmt_debug,
index ae64d5128369eb3905013e19727f4d1b817be420..c02f27c8760d050f171563263c80300285b9fc67 100644 (file)
@@ -455,6 +455,12 @@ void vtysh_config_parse_line(void *arg, const char *line)
                else if (strncmp(line, "debug resolver",
                                 strlen("debug resolver")) == 0)
                        config = config_get(RESOLVER_DEBUG_NODE, line);
+               else if (strncmp(line, "debug mgmt client frontend",
+                                strlen("debug mgmt client frontend")) == 0)
+                       config = config_get(MGMT_FE_DEBUG_NODE, line);
+               else if (strncmp(line, "debug mgmt client backend",
+                                strlen("debug mgmt client backend")) == 0)
+                       config = config_get(MGMT_BE_DEBUG_NODE, line);
                else if (strncmp(line, "debug", strlen("debug")) == 0)
                        config = config_get(DEBUG_NODE, line);
                else if (strncmp(line, "password", strlen("password")) == 0