mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 11:18:52 +00:00
lib: mgmtd: enable conn debugs when user enables client debug
Signed-off-by: Christian Hopps <chopps@labn.net>
This commit is contained in:
parent
83018e2178
commit
c37c19a9ec
@ -112,7 +112,11 @@ struct mgmt_be_client {
|
|||||||
#define FOREACH_BE_TXN_IN_LIST(client_ctx, txn) \
|
#define FOREACH_BE_TXN_IN_LIST(client_ctx, txn) \
|
||||||
frr_each_safe (mgmt_be_txns, &(client_ctx)->txn_head, (txn))
|
frr_each_safe (mgmt_be_txns, &(client_ctx)->txn_head, (txn))
|
||||||
|
|
||||||
struct debug mgmt_dbg_be_client = {0, "Management backend client operations"};
|
struct debug mgmt_dbg_be_client = {
|
||||||
|
.desc = "Management backend client operations"
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mgmt_be_client *mgmt_be_client;
|
||||||
|
|
||||||
static int mgmt_be_client_send_msg(struct mgmt_be_client *client_ctx,
|
static int mgmt_be_client_send_msg(struct mgmt_be_client *client_ctx,
|
||||||
Mgmtd__BeMessage *be_msg)
|
Mgmtd__BeMessage *be_msg)
|
||||||
@ -820,24 +824,28 @@ static int mgmt_be_client_notify_disconenct(struct msg_conn *conn)
|
|||||||
* Debug Flags
|
* Debug Flags
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static void mgmt_debug_client_be_set(uint32_t flags, bool set)
|
||||||
|
{
|
||||||
|
DEBUG_FLAGS_SET(&mgmt_dbg_be_client, flags, set);
|
||||||
|
|
||||||
|
if (!mgmt_be_client)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mgmt_be_client->client.conn.debug =
|
||||||
|
DEBUG_MODE_CHECK(&mgmt_dbg_be_client, DEBUG_MODE_ALL);
|
||||||
|
}
|
||||||
|
|
||||||
DEFPY(debug_mgmt_client_be, debug_mgmt_client_be_cmd,
|
DEFPY(debug_mgmt_client_be, debug_mgmt_client_be_cmd,
|
||||||
"[no] debug mgmt client backend",
|
"[no] debug mgmt client backend",
|
||||||
NO_STR DEBUG_STR MGMTD_STR
|
NO_STR DEBUG_STR MGMTD_STR
|
||||||
"client\n"
|
"client\n"
|
||||||
"backend\n")
|
"backend\n")
|
||||||
{
|
{
|
||||||
uint32_t mode = DEBUG_NODE2MODE(vty->node);
|
mgmt_debug_client_be_set(DEBUG_NODE2MODE(vty->node), !no);
|
||||||
|
|
||||||
DEBUG_MODE_SET(&mgmt_dbg_be_client, mode, !no);
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mgmt_debug_client_be_set_all(uint32_t flags, bool set)
|
|
||||||
{
|
|
||||||
DEBUG_FLAGS_SET(&mgmt_dbg_be_client, flags, set);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mgmt_debug_be_client_config_write(struct vty *vty)
|
static int mgmt_debug_be_client_config_write(struct vty *vty)
|
||||||
{
|
{
|
||||||
if (DEBUG_MODE_CHECK(&mgmt_dbg_be_client, DEBUG_MODE_CONF))
|
if (DEBUG_MODE_CHECK(&mgmt_dbg_be_client, DEBUG_MODE_CONF))
|
||||||
@ -853,7 +861,8 @@ void mgmt_debug_be_client_show_debug(struct vty *vty)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct debug_callbacks mgmt_dbg_be_client_cbs = {
|
static struct debug_callbacks mgmt_dbg_be_client_cbs = {
|
||||||
.debug_set_all = mgmt_debug_client_be_set_all};
|
.debug_set_all = mgmt_debug_client_be_set
|
||||||
|
};
|
||||||
|
|
||||||
static struct cmd_node mgmt_dbg_node = {
|
static struct cmd_node mgmt_dbg_node = {
|
||||||
.name = "debug mgmt client backend",
|
.name = "debug mgmt client backend",
|
||||||
@ -867,8 +876,13 @@ struct mgmt_be_client *mgmt_be_client_create(const char *client_name,
|
|||||||
uintptr_t user_data,
|
uintptr_t user_data,
|
||||||
struct event_loop *event_loop)
|
struct event_loop *event_loop)
|
||||||
{
|
{
|
||||||
struct mgmt_be_client *client =
|
struct mgmt_be_client *client;
|
||||||
XCALLOC(MTYPE_MGMTD_BE_CLIENT, sizeof(*client));
|
|
||||||
|
if (mgmt_be_client)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
client = XCALLOC(MTYPE_MGMTD_BE_CLIENT, sizeof(*client));
|
||||||
|
mgmt_be_client = client;
|
||||||
|
|
||||||
/* Only call after frr_init() */
|
/* Only call after frr_init() */
|
||||||
assert(running_config);
|
assert(running_config);
|
||||||
@ -902,6 +916,8 @@ void mgmt_be_client_lib_vty_init(void)
|
|||||||
|
|
||||||
void mgmt_be_client_destroy(struct mgmt_be_client *client)
|
void mgmt_be_client_destroy(struct mgmt_be_client *client)
|
||||||
{
|
{
|
||||||
|
assert(client == mgmt_be_client);
|
||||||
|
|
||||||
MGMTD_BE_CLIENT_DBG("Destroying MGMTD Backend Client '%s'",
|
MGMTD_BE_CLIENT_DBG("Destroying MGMTD Backend Client '%s'",
|
||||||
client->name);
|
client->name);
|
||||||
|
|
||||||
@ -912,4 +928,6 @@ void mgmt_be_client_destroy(struct mgmt_be_client *client)
|
|||||||
|
|
||||||
XFREE(MTYPE_MGMTD_BE_CLIENT_NAME, client->name);
|
XFREE(MTYPE_MGMTD_BE_CLIENT_NAME, client->name);
|
||||||
XFREE(MTYPE_MGMTD_BE_CLIENT, client);
|
XFREE(MTYPE_MGMTD_BE_CLIENT, client);
|
||||||
|
|
||||||
|
mgmt_be_client = NULL;
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,11 @@ struct mgmt_fe_client {
|
|||||||
#define FOREACH_SESSION_IN_LIST(client, session) \
|
#define FOREACH_SESSION_IN_LIST(client, session) \
|
||||||
frr_each_safe (mgmt_sessions, &(client)->sessions, (session))
|
frr_each_safe (mgmt_sessions, &(client)->sessions, (session))
|
||||||
|
|
||||||
struct debug mgmt_dbg_fe_client = {0, "Management frontend client operations"};
|
struct debug mgmt_dbg_fe_client = {
|
||||||
|
.desc = "Management frontend client operations"
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mgmt_fe_client *mgmt_fe_client;
|
||||||
|
|
||||||
static inline const char *dsid2name(Mgmtd__DatastoreId id)
|
static inline const char *dsid2name(Mgmtd__DatastoreId id)
|
||||||
{
|
{
|
||||||
@ -543,6 +546,16 @@ static int mgmt_fe_client_notify_disconnect(struct msg_conn *conn)
|
|||||||
return _notify_connect_disconnect(client, false);
|
return _notify_connect_disconnect(client, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mgmt_debug_client_fe_set(uint32_t mode, bool set)
|
||||||
|
{
|
||||||
|
DEBUG_FLAGS_SET(&mgmt_dbg_fe_client, mode, set);
|
||||||
|
|
||||||
|
if (!mgmt_fe_client)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mgmt_fe_client->client.conn.debug =
|
||||||
|
DEBUG_MODE_CHECK(&mgmt_dbg_fe_client, DEBUG_MODE_ALL);
|
||||||
|
}
|
||||||
|
|
||||||
DEFPY(debug_mgmt_client_fe, debug_mgmt_client_fe_cmd,
|
DEFPY(debug_mgmt_client_fe, debug_mgmt_client_fe_cmd,
|
||||||
"[no] debug mgmt client frontend",
|
"[no] debug mgmt client frontend",
|
||||||
@ -550,18 +563,11 @@ DEFPY(debug_mgmt_client_fe, debug_mgmt_client_fe_cmd,
|
|||||||
"client\n"
|
"client\n"
|
||||||
"frontend\n")
|
"frontend\n")
|
||||||
{
|
{
|
||||||
uint32_t mode = DEBUG_NODE2MODE(vty->node);
|
mgmt_debug_client_fe_set(DEBUG_NODE2MODE(vty->node), !no);
|
||||||
|
|
||||||
DEBUG_MODE_SET(&mgmt_dbg_fe_client, mode, !no);
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mgmt_debug_client_fe_set_all(uint32_t flags, bool set)
|
|
||||||
{
|
|
||||||
DEBUG_FLAGS_SET(&mgmt_dbg_fe_client, flags, set);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mgmt_debug_fe_client_config_write(struct vty *vty)
|
static int mgmt_debug_fe_client_config_write(struct vty *vty)
|
||||||
{
|
{
|
||||||
if (DEBUG_MODE_CHECK(&mgmt_dbg_fe_client, DEBUG_MODE_CONF))
|
if (DEBUG_MODE_CHECK(&mgmt_dbg_fe_client, DEBUG_MODE_CONF))
|
||||||
@ -577,7 +583,8 @@ void mgmt_debug_fe_client_show_debug(struct vty *vty)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct debug_callbacks mgmt_dbg_fe_client_cbs = {
|
static struct debug_callbacks mgmt_dbg_fe_client_cbs = {
|
||||||
.debug_set_all = mgmt_debug_client_fe_set_all};
|
.debug_set_all = mgmt_debug_client_fe_set
|
||||||
|
};
|
||||||
|
|
||||||
static struct cmd_node mgmt_dbg_node = {
|
static struct cmd_node mgmt_dbg_node = {
|
||||||
.name = "debug mgmt client frontend",
|
.name = "debug mgmt client frontend",
|
||||||
@ -594,8 +601,13 @@ struct mgmt_fe_client *mgmt_fe_client_create(const char *client_name,
|
|||||||
uintptr_t user_data,
|
uintptr_t user_data,
|
||||||
struct event_loop *event_loop)
|
struct event_loop *event_loop)
|
||||||
{
|
{
|
||||||
struct mgmt_fe_client *client =
|
struct mgmt_fe_client *client;
|
||||||
XCALLOC(MTYPE_MGMTD_FE_CLIENT, sizeof(*client));
|
|
||||||
|
if (mgmt_fe_client)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
client = XCALLOC(MTYPE_MGMTD_FE_CLIENT, sizeof(*client));
|
||||||
|
mgmt_fe_client = client;
|
||||||
|
|
||||||
client->name = XSTRDUP(MTYPE_MGMTD_FE_CLIENT_NAME, client_name);
|
client->name = XSTRDUP(MTYPE_MGMTD_FE_CLIENT_NAME, client_name);
|
||||||
client->user_data = user_data;
|
client->user_data = user_data;
|
||||||
@ -692,6 +704,8 @@ void mgmt_fe_client_destroy(struct mgmt_fe_client *client)
|
|||||||
{
|
{
|
||||||
struct mgmt_fe_client_session *session;
|
struct mgmt_fe_client_session *session;
|
||||||
|
|
||||||
|
assert(client == mgmt_fe_client);
|
||||||
|
|
||||||
MGMTD_FE_CLIENT_DBG("Destroying MGMTD Frontend Client '%s'",
|
MGMTD_FE_CLIENT_DBG("Destroying MGMTD Frontend Client '%s'",
|
||||||
client->name);
|
client->name);
|
||||||
|
|
||||||
@ -702,4 +716,6 @@ void mgmt_fe_client_destroy(struct mgmt_fe_client *client)
|
|||||||
|
|
||||||
XFREE(MTYPE_MGMTD_FE_CLIENT_NAME, client->name);
|
XFREE(MTYPE_MGMTD_FE_CLIENT_NAME, client->name);
|
||||||
XFREE(MTYPE_MGMTD_FE_CLIENT, client);
|
XFREE(MTYPE_MGMTD_FE_CLIENT, client);
|
||||||
|
|
||||||
|
mgmt_fe_client = NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user