summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/developer/workflow.rst36
-rw-r--r--lib/command.c4
-rw-r--r--lib/command.h4
-rw-r--r--lib/debug.c63
-rw-r--r--lib/debug.h49
-rw-r--r--lib/libfrr.c3
-rw-r--r--lib/mgmt_be_client.c30
-rw-r--r--lib/mgmt_be_client.h5
-rw-r--r--lib/mgmt_fe_client.c30
-rw-r--r--lib/mgmt_fe_client.h5
-rw-r--r--lib/northbound.h2
-rw-r--r--lib/northbound_cli.c100
-rw-r--r--lib/northbound_sysrepo.c26
-rw-r--r--mgmtd/mgmt.c16
-rw-r--r--mgmtd/mgmt_vty.c42
-rw-r--r--pathd/path_cli.c32
-rw-r--r--pathd/path_pcep.c7
-rw-r--r--pathd/path_pcep.h35
-rw-r--r--pathd/path_pcep_cli.c118
-rw-r--r--pathd/path_ted.c42
-rw-r--r--pathd/path_ted.h24
-rw-r--r--pathd/pathd.c18
-rw-r--r--pathd/pathd.h3
-rw-r--r--pbrd/pbr_debug.c55
-rw-r--r--pbrd/pbr_debug.h22
-rw-r--r--pbrd/pbr_vty.c27
-rw-r--r--staticd/static_debug.c71
-rw-r--r--staticd/static_debug.h16
-rw-r--r--staticd/static_vty.c10
-rw-r--r--tests/bgpd/test_peer_attr.c2
-rw-r--r--tests/helpers/c/main.c2
-rw-r--r--tests/lib/cli/common_cli.c2
-rw-r--r--tests/lib/cli/test_cli.refout.in2
-rw-r--r--tests/lib/cli/test_commands.c2
-rw-r--r--tests/lib/northbound/test_oper_data.c2
-rw-r--r--tests/lib/test_grpc.cpp2
-rw-r--r--tests/topotests/isis_topo1/test_isis_topo1.py2
-rw-r--r--vrrpd/vrrp_debug.c88
-rw-r--r--vrrpd/vrrp_debug.h8
-rw-r--r--vrrpd/vrrp_vty.c10
-rw-r--r--vtysh/vtysh_config.c15
-rw-r--r--zebra/zebra_rib.c3
42 files changed, 261 insertions, 774 deletions
diff --git a/doc/developer/workflow.rst b/doc/developer/workflow.rst
index a6bdec1e5b..50bcb2976e 100644
--- a/doc/developer/workflow.rst
+++ b/doc/developer/workflow.rst
@@ -531,6 +531,42 @@ After Submitting Your Changes
community members.
- Your submission is done once it is merged to the master branch.
+Reverting the changes
+=====================
+
+When you revert a regular commit in Git, the process is straightforward - it
+undoes the changes introduced by that commit. However, reverting a merge commit
+is more complex. While it undoes the data changes brought in by the merge, it
+does not alter the repository's history or the merge's effect on it.
+
+Reverting a Merge Commit
+------------------------
+
+When you revert a merge commit, the following occurs:
+
+* The changes made by the merge are undone;
+* The merge itself remains in the history: it continues to be recognized as the point where two branches were joined;
+* Future merges will still treat this as the last shared state, regardless of the revert.
+
+Thus, a "revert" in Git undoes data changes, but it does not serve as a true "undo"
+for the historical effects of a commit.
+
+Reverting a Merge and Bisectability
+-----------------------------------
+
+Consider the implications of reverting a merge and then reverting that revert.
+This scenario complicates the debugging process, especially when using tools like
+git bisect. A reverted merge effectively consolidates all changes from the original
+merge into a single commit, but in reverse. This creates a challenge for debugging,
+as you lose the granularity of individual commits, making it difficult to identify
+the specific change causing an issue.
+
+Considerations
+--------------
+
+When reverting the changes, e.g. a full Pull Request, we SHOULD revert every commit
+individually, and not use git revert on merge commits.
+
Programming Languages, Tools and Libraries
==========================================
diff --git a/lib/command.c b/lib/command.c
index 51f2529e3e..ac8d60118e 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -17,6 +17,7 @@
#include <lib/version.h>
#include "command.h"
+#include "debug.h"
#include "frrstr.h"
#include "memory.h"
#include "log.h"
@@ -2463,8 +2464,7 @@ const char *host_config_get(void)
void cmd_show_lib_debugs(struct vty *vty)
{
route_map_show_debug(vty);
- mgmt_debug_be_client_show_debug(vty);
- mgmt_debug_fe_client_show_debug(vty);
+ debug_status_write(vty);
}
void install_default(enum node_type node)
diff --git a/lib/command.h b/lib/command.h
index cb105c656c..61d09973fd 100644
--- a/lib/command.h
+++ b/lib/command.h
@@ -84,14 +84,12 @@ enum node_type {
CONFIG_NODE, /* Config node. Default mode of config file. */
PREFIX_NODE, /* ip prefix-list node. */
PREFIX_IPV6_NODE, /* ipv6 prefix-list node. */
+ LIB_DEBUG_NODE, /* frrlib debug node. */
DEBUG_NODE, /* Debug node. */
VRF_DEBUG_NODE, /* Vrf Debug node. */
- NORTHBOUND_DEBUG_NODE, /* Northbound Debug node. */
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. */
diff --git a/lib/debug.c b/lib/debug.c
index 757a47ab99..d25c32d428 100644
--- a/lib/debug.c
+++ b/lib/debug.c
@@ -9,42 +9,75 @@
#include "debug.h"
#include "command.h"
-static struct debug_cb_list_head cb_head;
+static struct debug_list_head debug_head;
-DECLARE_LIST(debug_cb_list, struct debug_callbacks, item);
+DECLARE_LIST(debug_list, struct debug, item);
/* All code in this section should be reentrant and MT-safe */
-DEFUN_NOSH(debug_all, debug_all_cmd, "[no] debug all",
- NO_STR DEBUG_STR "Toggle all debugging output\n")
+DEFUN_NOSH (debug_all,
+ debug_all_cmd,
+ "[no] debug all",
+ NO_STR DEBUG_STR
+ "Toggle all debugging output\n")
{
- struct debug_callbacks *cb;
-
+ struct debug *debug;
bool set = !strmatch(argv[0]->text, "no");
uint32_t mode = DEBUG_NODE2MODE(vty->node);
- frr_each (debug_cb_list, &cb_head, cb)
- cb->debug_set_all(mode, set);
+ frr_each (debug_list, &debug_head, debug) {
+ DEBUG_MODE_SET(debug, mode, set);
+
+ /* If all modes have been turned off, don't preserve options. */
+ if (!DEBUG_MODE_CHECK(debug, DEBUG_MODE_ALL))
+ DEBUG_CLEAR(debug);
+ }
return CMD_SUCCESS;
}
/* ------------------------------------------------------------------------- */
-void debug_init(struct debug_callbacks *cb)
+void debug_status_write(struct vty *vty)
+{
+ struct debug *debug;
+
+ frr_each (debug_list, &debug_head, debug) {
+ if (DEBUG_MODE_CHECK(debug, DEBUG_MODE_ALL))
+ vty_out(vty, " %s debugging is on\n", debug->desc);
+ }
+}
+
+static int config_write_debug(struct vty *vty)
{
- static bool inited = false;
+ struct debug *debug;
- if (!inited) {
- inited = true;
- debug_cb_list_init(&cb_head);
+ frr_each (debug_list, &debug_head, debug) {
+ if (DEBUG_MODE_CHECK(debug, DEBUG_MODE_CONF))
+ vty_out(vty, "%s\n", debug->conf);
}
- debug_cb_list_add_head(&cb_head, cb);
+ return 0;
}
-void debug_init_cli(void)
+static struct cmd_node debug_node = {
+ .name = "debug",
+ .node = LIB_DEBUG_NODE,
+ .prompt = "",
+ .config_write = config_write_debug,
+};
+
+void debug_install(struct debug *debug)
{
+ debug_list_add_tail(&debug_head, debug);
+}
+
+void debug_init(void)
+{
+ debug_list_init(&debug_head);
+
+ install_node(&debug_node);
+
install_element(ENABLE_NODE, &debug_all_cmd);
install_element(CONFIG_NODE, &debug_all_cmd);
}
diff --git a/lib/debug.h b/lib/debug.h
index e9d8a31abd..eee314cff5 100644
--- a/lib/debug.h
+++ b/lib/debug.h
@@ -34,6 +34,7 @@ extern "C" {
#define DEBUG_OPT_NONE 0x00000000
+PREDECL_LIST(debug_list);
/*
* Debugging record.
*
@@ -63,37 +64,18 @@ extern "C" {
* manipulate the flags field in a multithreaded environment results in
* undefined behavior.
*
+ * conf
+ * The configuration string that will be written to the config file.
+ *
* desc
* Human-readable description of this debugging record.
*/
struct debug {
atomic_uint_fast32_t flags;
+ const char *conf;
const char *desc;
-};
-PREDECL_LIST(debug_cb_list);
-/*
- * Callback set for debugging code.
- *
- * debug_set_all
- * Function pointer to call when the user requests that all debugs have a
- * mode set.
- */
-struct debug_callbacks {
- /*
- * Linked list of Callbacks to call
- */
- struct debug_cb_list_item item;
-
- /*
- * flags
- * flags to set on debug flag fields
- *
- * set
- * true: set flags
- * false: unset flags
- */
- void (*debug_set_all)(uint32_t flags, bool set);
+ struct debug_list_item item;
};
/*
@@ -217,22 +199,19 @@ struct debug_callbacks {
#define DEBUGN(name, fmt, ...) DEBUG(notice, name, fmt, ##__VA_ARGS__)
#define DEBUGD(name, fmt, ...) DEBUG(debug, name, fmt, ##__VA_ARGS__)
+/* Show current debugging status. */
+void debug_status_write(struct vty *vty);
+
/*
- * Optional initializer for debugging. Highly recommended.
- *
- * This function installs common debugging commands and allows the caller to
- * specify callbacks to take when these commands are issued, allowing the
- * caller to respond to events such as a request to turn off all debugs.
- *
- * MT-Safe
+ * Register a debug item.
*/
-void debug_init(struct debug_callbacks *cb);
+void debug_install(struct debug *debug);
/*
- * Turn on the cli to turn on/off debugs.
- * Should only be called by libfrr
+ * Initialize debugging.
+ * Should only be called by libfrr.
*/
-void debug_init_cli(void);
+void debug_init(void);
#ifdef __cplusplus
}
diff --git a/lib/libfrr.c b/lib/libfrr.c
index 10a9c5d5f2..0a575abac6 100644
--- a/lib/libfrr.c
+++ b/lib/libfrr.c
@@ -809,6 +809,7 @@ struct event_loop *frr_init(void)
vty_init(master, di->log_always);
lib_cmd_init();
+ debug_init();
frr_pthread_init();
#ifdef HAVE_SCRIPTING
@@ -825,8 +826,6 @@ struct event_loop *frr_init(void)
"%s: failed to initialize northbound database",
__func__);
- debug_init_cli();
-
return master;
}
diff --git a/lib/mgmt_be_client.c b/lib/mgmt_be_client.c
index 49879f3f53..f03006ad0e 100644
--- a/lib/mgmt_be_client.c
+++ b/lib/mgmt_be_client.c
@@ -116,6 +116,7 @@ struct mgmt_be_client {
frr_each_safe (mgmt_be_txns, &(client_ctx)->txn_head, (txn))
struct debug mgmt_dbg_be_client = {
+ .conf = "debug mgmt client backend",
.desc = "Management backend client operations"
};
@@ -1258,31 +1259,6 @@ DEFPY(debug_mgmt_client_be, debug_mgmt_client_be_cmd,
return CMD_SUCCESS;
}
-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 backend\n");
-
- return 1;
-}
-
-void mgmt_debug_be_client_show_debug(struct vty *vty)
-{
- if (debug_check_be_client())
- vty_out(vty, "debug mgmt client backend\n");
-}
-
-static struct debug_callbacks mgmt_dbg_be_client_cbs = {
- .debug_set_all = mgmt_debug_client_be_set
-};
-
-static struct cmd_node mgmt_dbg_node = {
- .name = "debug mgmt client backend",
- .node = MGMT_BE_DEBUG_NODE,
- .prompt = "",
- .config_write = mgmt_debug_be_client_config_write,
-};
-
struct mgmt_be_client *mgmt_be_client_create(const char *client_name,
struct mgmt_be_client_cbs *cbs,
uintptr_t user_data,
@@ -1328,8 +1304,8 @@ struct mgmt_be_client *mgmt_be_client_create(const char *client_name,
void mgmt_be_client_lib_vty_init(void)
{
- debug_init(&mgmt_dbg_be_client_cbs);
- install_node(&mgmt_dbg_node);
+ debug_install(&mgmt_dbg_be_client);
+
install_element(ENABLE_NODE, &debug_mgmt_client_be_cmd);
install_element(CONFIG_NODE, &debug_mgmt_client_be_cmd);
}
diff --git a/lib/mgmt_be_client.h b/lib/mgmt_be_client.h
index 7ad0589bdb..6ed8c2a39f 100644
--- a/lib/mgmt_be_client.h
+++ b/lib/mgmt_be_client.h
@@ -122,11 +122,6 @@ mgmt_be_client_create(const char *name, struct mgmt_be_client_cbs *cbs,
extern void mgmt_be_client_lib_vty_init(void);
/*
- * Print enabled debugging commands.
- */
-extern void mgmt_debug_be_client_show_debug(struct vty *vty);
-
-/*
* [Un]-subscribe with MGMTD for one or more YANG subtree(s).
*
* client
diff --git a/lib/mgmt_fe_client.c b/lib/mgmt_fe_client.c
index 8cfb025f72..ced2f2e454 100644
--- a/lib/mgmt_fe_client.c
+++ b/lib/mgmt_fe_client.c
@@ -49,6 +49,7 @@ struct mgmt_fe_client {
frr_each_safe (mgmt_sessions, &(client)->sessions, (session))
struct debug mgmt_dbg_fe_client = {
+ .conf = "debug mgmt client frontend",
.desc = "Management frontend client operations"
};
@@ -805,31 +806,6 @@ DEFPY(debug_mgmt_client_fe, debug_mgmt_client_fe_cmd,
return CMD_SUCCESS;
}
-static int mgmt_debug_fe_client_config_write(struct vty *vty)
-{
- if (DEBUG_MODE_CHECK(&mgmt_dbg_fe_client, DEBUG_MODE_CONF))
- vty_out(vty, "debug mgmt client frontend\n");
-
- return CMD_SUCCESS;
-}
-
-void mgmt_debug_fe_client_show_debug(struct vty *vty)
-{
- if (debug_check_fe_client())
- vty_out(vty, "debug mgmt client frontend\n");
-}
-
-static struct debug_callbacks mgmt_dbg_fe_client_cbs = {
- .debug_set_all = mgmt_debug_client_fe_set
-};
-
-static struct cmd_node mgmt_dbg_node = {
- .name = "debug mgmt client frontend",
- .node = MGMT_FE_DEBUG_NODE,
- .prompt = "",
- .config_write = mgmt_debug_fe_client_config_write,
-};
-
/*
* Initialize library and try connecting with MGMTD.
*/
@@ -870,8 +846,8 @@ struct mgmt_fe_client *mgmt_fe_client_create(const char *client_name,
void mgmt_fe_client_lib_vty_init(void)
{
- debug_init(&mgmt_dbg_fe_client_cbs);
- install_node(&mgmt_dbg_node);
+ debug_install(&mgmt_dbg_fe_client);
+
install_element(ENABLE_NODE, &debug_mgmt_client_fe_cmd);
install_element(CONFIG_NODE, &debug_mgmt_client_fe_cmd);
}
diff --git a/lib/mgmt_fe_client.h b/lib/mgmt_fe_client.h
index 20c87044a5..2b5a25fa0d 100644
--- a/lib/mgmt_fe_client.h
+++ b/lib/mgmt_fe_client.h
@@ -179,11 +179,6 @@ mgmt_fe_client_create(const char *client_name, struct mgmt_fe_client_cbs *cbs,
extern void mgmt_fe_client_lib_vty_init(void);
/*
- * Print enabled debugging commands.
- */
-extern void mgmt_debug_fe_client_show_debug(struct vty *vty);
-
-/*
* Create a new Session for a Frontend Client connection.
*
* lib_hndl
diff --git a/lib/northbound.h b/lib/northbound.h
index 34d17a587c..da5f5be1ee 100644
--- a/lib/northbound.h
+++ b/lib/northbound.h
@@ -799,8 +799,6 @@ DECLARE_HOOK(nb_notification_send, (const char *xpath, struct list *arguments),
(xpath, arguments));
DECLARE_HOOK(nb_notification_tree_send,
(const char *xpath, const struct lyd_node *tree), (xpath, tree));
-DECLARE_HOOK(nb_client_debug_config_write, (struct vty *vty), (vty));
-DECLARE_HOOK(nb_client_debug_set_all, (uint32_t flags, bool set), (flags, set));
/* Northbound debugging records */
extern struct debug nb_dbg_cbs_config;
diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c
index 4f962cda5c..f70bae9ed2 100644
--- a/lib/northbound_cli.c
+++ b/lib/northbound_cli.c
@@ -22,13 +22,19 @@
#include "northbound_db.h"
#include "lib/northbound_cli_clippy.c"
-struct debug nb_dbg_cbs_config = {0, "Northbound callbacks: configuration"};
-struct debug nb_dbg_cbs_state = {0, "Northbound callbacks: state"};
-struct debug nb_dbg_cbs_rpc = {0, "Northbound callbacks: RPCs"};
-struct debug nb_dbg_cbs_notify = {0, "Northbound callbacks: notifications"};
-struct debug nb_dbg_notif = {0, "Northbound notifications"};
-struct debug nb_dbg_events = {0, "Northbound events"};
-struct debug nb_dbg_libyang = {0, "libyang debugging"};
+struct debug nb_dbg_cbs_config = { 0, "debug northbound callbacks configuration",
+ "Northbound callbacks: configuration" };
+struct debug nb_dbg_cbs_state = { 0, "debug northbound callbacks state",
+ "Northbound callbacks: state" };
+struct debug nb_dbg_cbs_rpc = { 0, "debug northbound callbacks rpc",
+ "Northbound callbacks: RPCs" };
+struct debug nb_dbg_cbs_notify = { 0, "debug northbound callbacks notify",
+ "Northbound callbacks: notifications" };
+struct debug nb_dbg_notif = { 0, "debug northbound notifications",
+ "Northbound notifications" };
+struct debug nb_dbg_events = { 0, "debug northbound events",
+ "Northbound events" };
+struct debug nb_dbg_libyang = { 0, "debug northbound libyang", "libyang" };
struct nb_config *vty_shared_candidate_config;
static struct event_loop *master;
@@ -1842,37 +1848,6 @@ DEFPY (rollback_config,
}
/* Debug CLI commands. */
-static struct debug *nb_debugs[] = {
- &nb_dbg_cbs_config, &nb_dbg_cbs_state, &nb_dbg_cbs_rpc,
- &nb_dbg_cbs_notify, &nb_dbg_notif, &nb_dbg_events,
- &nb_dbg_libyang,
-};
-
-static const char *const nb_debugs_conflines[] = {
- "debug northbound callbacks configuration",
- "debug northbound callbacks state",
- "debug northbound callbacks rpc",
- "debug northbound callbacks notify",
- "debug northbound notifications",
- "debug northbound events",
- "debug northbound libyang",
-};
-
-DEFINE_HOOK(nb_client_debug_set_all, (uint32_t flags, bool set), (flags, set));
-
-static void nb_debug_set_all(uint32_t flags, bool set)
-{
- for (unsigned int i = 0; i < array_size(nb_debugs); i++) {
- DEBUG_FLAGS_SET(nb_debugs[i], flags, set);
-
- /* If all modes have been turned off, don't preserve options. */
- if (!DEBUG_MODE_CHECK(nb_debugs[i], DEBUG_MODE_ALL))
- DEBUG_CLEAR(nb_debugs[i]);
- }
-
- hook_call(nb_client_debug_set_all, flags, set);
-}
-
DEFPY (debug_nb,
debug_nb_cmd,
"[no] debug northbound\
@@ -1895,8 +1870,13 @@ DEFPY (debug_nb,
"libyang debugging\n")
{
uint32_t mode = DEBUG_NODE2MODE(vty->node);
+ bool all = false;
+
+ /* no specific debug --> act on all of them */
+ if (strmatch(argv[argc - 1]->text, "northbound"))
+ all = true;
- if (cbs) {
+ if (cbs || all) {
bool none = (!cbs_cfg && !cbs_state && !cbs_rpc && !cbs_notify);
if (none || cbs_cfg)
@@ -1908,45 +1888,18 @@ DEFPY (debug_nb,
if (none || cbs_notify)
DEBUG_MODE_SET(&nb_dbg_cbs_notify, mode, !no);
}
- if (notifications)
+ if (notifications || all)
DEBUG_MODE_SET(&nb_dbg_notif, mode, !no);
- if (events)
+ if (events || all)
DEBUG_MODE_SET(&nb_dbg_events, mode, !no);
- if (libyang) {
+ if (libyang || all) {
DEBUG_MODE_SET(&nb_dbg_libyang, mode, !no);
yang_debugging_set(!no);
}
- /* no specific debug --> act on all of them */
- if (strmatch(argv[argc - 1]->text, "northbound")) {
- nb_debug_set_all(mode, !no);
- yang_debugging_set(!no);
- }
-
return CMD_SUCCESS;
}
-DEFINE_HOOK(nb_client_debug_config_write, (struct vty *vty), (vty));
-
-static int nb_debug_config_write(struct vty *vty)
-{
- for (unsigned int i = 0; i < array_size(nb_debugs); i++)
- if (DEBUG_MODE_CHECK(nb_debugs[i], DEBUG_MODE_CONF))
- vty_out(vty, "%s\n", nb_debugs_conflines[i]);
-
- hook_call(nb_client_debug_config_write, vty);
-
- return 1;
-}
-
-static struct debug_callbacks nb_dbg_cbs = {.debug_set_all = nb_debug_set_all};
-static struct cmd_node nb_debug_node = {
- .name = "northbound debug",
- .node = NORTHBOUND_DEBUG_NODE,
- .prompt = "",
- .config_write = nb_debug_config_write,
-};
-
void nb_cli_install_default(int node)
{
_install_element(node, &show_config_candidate_section_cmd);
@@ -2007,9 +1960,14 @@ void nb_cli_init(struct event_loop *tm)
/* Initialize the shared candidate configuration. */
vty_shared_candidate_config = nb_config_new(NULL);
- debug_init(&nb_dbg_cbs);
+ debug_install(&nb_dbg_cbs_config);
+ debug_install(&nb_dbg_cbs_state);
+ debug_install(&nb_dbg_cbs_rpc);
+ debug_install(&nb_dbg_cbs_notify);
+ debug_install(&nb_dbg_notif);
+ debug_install(&nb_dbg_events);
+ debug_install(&nb_dbg_libyang);
- install_node(&nb_debug_node);
install_element(ENABLE_NODE, &debug_nb_cmd);
install_element(CONFIG_NODE, &debug_nb_cmd);
diff --git a/lib/northbound_sysrepo.c b/lib/northbound_sysrepo.c
index 0ec7610a9a..1f4d036cc2 100644
--- a/lib/northbound_sysrepo.c
+++ b/lib/northbound_sysrepo.c
@@ -19,7 +19,9 @@
#include <sysrepo/values.h>
#include <sysrepo/xpath.h>
-static struct debug nb_dbg_client_sysrepo = {0, "Northbound client: Sysrepo"};
+static struct debug nb_dbg_client_sysrepo = { 0,
+ "debug northbound client sysrepo",
+ "Northbound client: Sysrepo" };
static struct event_loop *master;
static sr_session_ctx_t *session;
@@ -553,29 +555,9 @@ DEFUN (debug_nb_sr,
return CMD_SUCCESS;
}
-static int frr_sr_debug_config_write(struct vty *vty)
-{
- if (DEBUG_MODE_CHECK(&nb_dbg_client_sysrepo, DEBUG_MODE_CONF))
- vty_out(vty, "debug northbound client sysrepo\n");
-
- return 0;
-}
-
-static int frr_sr_debug_set_all(uint32_t flags, bool set)
-{
- DEBUG_FLAGS_SET(&nb_dbg_client_sysrepo, flags, set);
-
- /* If all modes have been turned off, don't preserve options. */
- if (!DEBUG_MODE_CHECK(&nb_dbg_client_sysrepo, DEBUG_MODE_ALL))
- DEBUG_CLEAR(&nb_dbg_client_sysrepo);
-
- return 0;
-}
-
static void frr_sr_cli_init(void)
{
- hook_register(nb_client_debug_config_write, frr_sr_debug_config_write);
- hook_register(nb_client_debug_set_all, frr_sr_debug_set_all);
+ debug_install(&nb_dbg_client_sysrepo);
install_element(ENABLE_NODE, &debug_nb_sr_cmd);
install_element(CONFIG_NODE, &debug_nb_sr_cmd);
diff --git a/mgmtd/mgmt.c b/mgmtd/mgmt.c
index fe0357e7e4..cfadad4829 100644
--- a/mgmtd/mgmt.c
+++ b/mgmtd/mgmt.c
@@ -15,10 +15,14 @@
#include "mgmtd/mgmt_history.h"
#include "mgmtd/mgmt_memory.h"
-struct debug mgmt_debug_be = { .desc = "Management backend adapter" };
-struct debug mgmt_debug_ds = {.desc = "Management datastore"};
-struct debug mgmt_debug_fe = { .desc = "Management frontend adapter" };
-struct debug mgmt_debug_txn = {.desc = "Management transaction"};
+struct debug mgmt_debug_be = { .conf = "debug mgmt backend",
+ .desc = "Management backend adapter" };
+struct debug mgmt_debug_ds = { .conf = "debug mgmt datastore",
+ .desc = "Management datastore" };
+struct debug mgmt_debug_fe = { .conf = "debug mgmt frontend",
+ .desc = "Management frontend adapter" };
+struct debug mgmt_debug_txn = { .conf = "debug mgmt transaction",
+ .desc = "Management transaction" };
/* MGMTD process wide configuration. */
static struct mgmt_master mgmt_master;
@@ -39,6 +43,10 @@ void mgmt_master_init(struct event_loop *master, const int buffer_size)
void mgmt_init(void)
{
+ debug_install(&mgmt_debug_be);
+ debug_install(&mgmt_debug_ds);
+ debug_install(&mgmt_debug_fe);
+ debug_install(&mgmt_debug_txn);
/* Initialize datastores */
mgmt_ds_init(mm);
diff --git a/mgmtd/mgmt_vty.c b/mgmtd/mgmt_vty.c
index 8ccb463577..876f703560 100644
--- a/mgmtd/mgmt_vty.c
+++ b/mgmtd/mgmt_vty.c
@@ -557,52 +557,11 @@ DEFPY(mgmt_rollback,
return CMD_SUCCESS;
}
-int config_write_mgmt_debug(struct vty *vty);
-static struct cmd_node debug_node = {
- .name = "mgmt debug",
- .node = DEBUG_NODE,
- .prompt = "",
- .config_write = config_write_mgmt_debug,
-};
-
-static int write_mgmt_debug_helper(struct vty *vty, bool config)
-{
- uint32_t mode = config ? DEBUG_MODE_CONF : DEBUG_MODE_ALL;
- bool be = DEBUG_MODE_CHECK(&mgmt_debug_be, mode);
- bool ds = DEBUG_MODE_CHECK(&mgmt_debug_ds, mode);
- bool fe = DEBUG_MODE_CHECK(&mgmt_debug_fe, mode);
- bool txn = DEBUG_MODE_CHECK(&mgmt_debug_txn, mode);
-
- if (!(be || ds || fe || txn))
- return 0;
-
- vty_out(vty, "debug mgmt");
- if (be)
- vty_out(vty, " backend");
- if (ds)
- vty_out(vty, " datastore");
- if (fe)
- vty_out(vty, " frontend");
- if (txn)
- vty_out(vty, " transaction");
-
- vty_out(vty, "\n");
-
- return 0;
-}
-
-int config_write_mgmt_debug(struct vty *vty)
-{
- return write_mgmt_debug_helper(vty, true);
-}
-
DEFPY_NOSH(show_debugging_mgmt, show_debugging_mgmt_cmd,
"show debugging [mgmt]", SHOW_STR DEBUG_STR "MGMT Information\n")
{
vty_out(vty, "MGMT debugging status:\n");
- write_mgmt_debug_helper(vty, false);
-
cmd_show_lib_debugs(vty);
return CMD_SUCCESS;
@@ -696,7 +655,6 @@ void mgmt_vty_init(void)
event_add_event(mm->master, mgmt_config_read_in, NULL, 0,
&mgmt_daemon_info->read_in);
- install_node(&debug_node);
install_node(&mgmtd_node);
install_element(VIEW_NODE, &show_mgmt_be_adapter_cmd);
diff --git a/pathd/path_cli.c b/pathd/path_cli.c
index e22931c13e..436883c1fd 100644
--- a/pathd/path_cli.c
+++ b/pathd/path_cli.c
@@ -1089,9 +1089,7 @@ DEFPY_NOSH(show_debugging_pathd, show_debugging_pathd_cmd,
vty_out(vty, "Path debugging status:\n");
cmd_show_lib_debugs(vty);
- /* nothing to do here */
- path_ted_show_debugging(vty);
- path_policy_show_debugging(vty);
+
return CMD_SUCCESS;
}
@@ -1101,10 +1099,8 @@ DEFPY(debug_path_policy, debug_path_policy_cmd, "[no] debug pathd policy",
"policy debugging\n")
{
uint32_t mode = DEBUG_NODE2MODE(vty->node);
- bool no_debug = no;
DEBUG_MODE_SET(&path_policy_debug, mode, !no);
- DEBUG_FLAGS_SET(&path_policy_debug, PATH_POLICY_DEBUG_BASIC, !no_debug);
return CMD_SUCCESS;
}
@@ -1307,33 +1303,9 @@ int config_write_segment_routing(struct vty *vty)
return 1;
}
-static int path_policy_cli_debug_config_write(struct vty *vty)
-{
- if (DEBUG_MODE_CHECK(&path_policy_debug, DEBUG_MODE_CONF)) {
- if (DEBUG_FLAGS_CHECK(&path_policy_debug,
- PATH_POLICY_DEBUG_BASIC))
- vty_out(vty, "debug pathd policy\n");
- return 1;
- }
- return 0;
-}
-
-static int path_policy_cli_debug_set_all(uint32_t flags, bool set)
-{
- DEBUG_FLAGS_SET(&path_policy_debug, flags, set);
-
- /* If all modes have been turned off, don't preserve options. */
- if (!DEBUG_MODE_CHECK(&path_policy_debug, DEBUG_MODE_ALL))
- DEBUG_CLEAR(&path_policy_debug);
-
- return 0;
-}
-
void path_cli_init(void)
{
- hook_register(nb_client_debug_config_write,
- path_policy_cli_debug_config_write);
- hook_register(nb_client_debug_set_all, path_policy_cli_debug_set_all);
+ debug_install(&path_policy_debug);
install_node(&segment_routing_node);
install_node(&sr_traffic_eng_node);
diff --git a/pathd/path_pcep.c b/pathd/path_pcep.c
index ec9d8adfc1..a0a53b0d84 100644
--- a/pathd/path_pcep.c
+++ b/pathd/path_pcep.c
@@ -31,7 +31,12 @@ DEFINE_MTYPE(PATHD, PCEP, "PCEP module");
/*
* Globals.
*/
-static struct pcep_glob pcep_glob_space = {.dbg = {0, "pathd module: pcep"}};
+static struct pcep_glob pcep_glob_space = {
+ .dbg_basic = { 0, "debug pathd pcep basic", "PCEP basic" },
+ .dbg_path = { 0, "debug pathd pcep path", "PCEP path" },
+ .dbg_msg = { 0, "debug pathd pcep message", "PCEP message" },
+ .dbg_lib = { 0, "debug pathd pcep pceplib", "PCEP lib" },
+};
struct pcep_glob *pcep_g = &pcep_glob_space;
/* Main Thread Even Handler */
diff --git a/pathd/path_pcep.h b/pathd/path_pcep.h
index d6dbcb5c08..a4f899df58 100644
--- a/pathd/path_pcep.h
+++ b/pathd/path_pcep.h
@@ -27,40 +27,22 @@ DECLARE_MTYPE(PCEP);
#define PCEP_DEBUG_MODE_PCEPLIB 0x08
#define PCEP_DEBUG_MODE_ALL 0x0F
#define PCEP_DEBUG(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_BASIC)) \
- DEBUGD(&pcep_g->dbg, "pcep: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGD(&pcep_g->dbg_basic, "pcep: " fmt, ##__VA_ARGS__)
#define PCEP_DEBUG_PATH(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PATH)) \
- DEBUGD(&pcep_g->dbg, "pcep: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGD(&pcep_g->dbg_path, "pcep: " fmt, ##__VA_ARGS__)
#define PCEP_DEBUG_PCEP(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEP)) \
- DEBUGD(&pcep_g->dbg, "pcep: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGD(&pcep_g->dbg_msg, "pcep: " fmt, ##__VA_ARGS__)
#define PCEP_DEBUG_PCEPLIB(priority, fmt, ...) \
do { \
switch (priority) { \
case LOG_DEBUG: \
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, \
- PCEP_DEBUG_MODE_PCEPLIB)) \
- DEBUGD(&pcep_g->dbg, "pcep: " fmt, \
- ##__VA_ARGS__); \
+ DEBUGD(&pcep_g->dbg_lib, "pcep: " fmt, ##__VA_ARGS__); \
break; \
case LOG_INFO: \
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, \
- PCEP_DEBUG_MODE_PCEPLIB)) \
- DEBUGI(&pcep_g->dbg, "pcep: " fmt, \
- ##__VA_ARGS__); \
+ DEBUGI(&pcep_g->dbg_lib, "pcep: " fmt, ##__VA_ARGS__); \
break; \
case LOG_NOTICE: \
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, \
- PCEP_DEBUG_MODE_PCEPLIB)) \
- DEBUGN(&pcep_g->dbg, "pcep: " fmt, \
- ##__VA_ARGS__); \
+ DEBUGN(&pcep_g->dbg_lib, "pcep: " fmt, ##__VA_ARGS__); \
break; \
case LOG_WARNING: \
case LOG_ERR: \
@@ -294,7 +276,10 @@ struct path {
};
struct pcep_glob {
- struct debug dbg;
+ struct debug dbg_basic;
+ struct debug dbg_path;
+ struct debug dbg_msg;
+ struct debug dbg_lib;
struct event_loop *master;
struct frr_pthread *fpt;
uint8_t num_pce_opts_cli;
diff --git a/pathd/path_pcep_cli.c b/pathd/path_pcep_cli.c
index 47a811d144..8ceadb3e60 100644
--- a/pathd/path_pcep_cli.c
+++ b/pathd/path_pcep_cli.c
@@ -46,8 +46,6 @@
#define BUFFER_PCC_PCE_SIZE 1024
/* CLI Function declarations */
-static int pcep_cli_debug_config_write(struct vty *vty);
-static int pcep_cli_debug_set_all(uint32_t flags, bool set);
static int pcep_cli_pcep_config_write(struct vty *vty);
static int pcep_cli_pcc_config_write(struct vty *vty);
static int pcep_cli_pce_config_write(struct vty *vty);
@@ -110,10 +108,6 @@ static const char PCEP_VTYSH_ARG_DELEGATION_TIMEOUT[] = "delegation-timeout";
static const char PCEP_VTYSH_ARG_SR_DRAFT07[] = "sr-draft07";
static const char PCEP_VTYSH_ARG_PCE_INIT[] = "pce-initiated";
static const char PCEP_VTYSH_ARG_TCP_MD5[] = "tcp-md5-auth";
-static const char PCEP_VTYSH_ARG_BASIC[] = "basic";
-static const char PCEP_VTYSH_ARG_PATH[] = "path";
-static const char PCEP_VTYSH_ARG_MESSAGE[] = "message";
-static const char PCEP_VTYSH_ARG_PCEPLIB[] = "pceplib";
static const char PCEP_CLI_CAP_STATEFUL[] = " [Stateful PCE]";
static const char PCEP_CLI_CAP_INCL_DB_VER[] = " [Include DB version]";
static const char PCEP_CLI_CAP_LSP_TRIGGERED[] = " [LSP Triggered Resync]";
@@ -463,31 +457,19 @@ static void pcep_cli_remove_pce_connection(struct pce_opts *pce_opts)
* VTY command implementations
*/
-static int path_pcep_cli_debug(struct vty *vty, const char *debug_type, bool set)
+static int path_pcep_cli_debug(struct vty *vty, bool onoff, bool basic,
+ bool path, bool message, bool lib)
{
uint32_t mode = DEBUG_NODE2MODE(vty->node);
- /* Global Set */
- if (debug_type == NULL) {
- DEBUG_MODE_SET(&pcep_g->dbg, mode, set);
- DEBUG_FLAGS_SET(&pcep_g->dbg, PCEP_DEBUG_MODE_ALL, set);
- return CMD_SUCCESS;
- }
-
- DEBUG_MODE_SET(&pcep_g->dbg, mode, true);
-
- if (strcmp(debug_type, "basic") == 0)
- DEBUG_FLAGS_SET(&pcep_g->dbg, PCEP_DEBUG_MODE_BASIC, set);
- else if (strcmp(debug_type, "path") == 0)
- DEBUG_FLAGS_SET(&pcep_g->dbg, PCEP_DEBUG_MODE_PATH, set);
- else if (strcmp(debug_type, "message") == 0)
- DEBUG_FLAGS_SET(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEP, set);
- else if (strcmp(debug_type, "pceplib") == 0)
- DEBUG_FLAGS_SET(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEPLIB, set);
-
- /* Unset the pcep debug mode if there is no flag at least set*/
- if (!DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_ALL))
- DEBUG_MODE_SET(&pcep_g->dbg, mode, false);
+ if (basic)
+ DEBUG_MODE_SET(&pcep_g->dbg_basic, mode, onoff);
+ if (path)
+ DEBUG_MODE_SET(&pcep_g->dbg_path, mode, onoff);
+ if (message)
+ DEBUG_MODE_SET(&pcep_g->dbg_msg, mode, onoff);
+ if (lib)
+ DEBUG_MODE_SET(&pcep_g->dbg_lib, mode, onoff);
return CMD_SUCCESS;
}
@@ -1712,42 +1694,6 @@ static int path_pcep_cli_clear_srte_pcep_session(struct vty *vty,
* Config Write functions
*/
-int pcep_cli_debug_config_write(struct vty *vty)
-{
- char buff[128] = "";
-
- if (DEBUG_MODE_CHECK(&pcep_g->dbg, DEBUG_MODE_CONF)) {
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_BASIC))
- csnprintfrr(buff, sizeof(buff), " %s",
- PCEP_VTYSH_ARG_BASIC);
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PATH))
- csnprintfrr(buff, sizeof(buff), " %s",
- PCEP_VTYSH_ARG_PATH);
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEP))
- csnprintfrr(buff, sizeof(buff), " %s",
- PCEP_VTYSH_ARG_MESSAGE);
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEPLIB))
- csnprintfrr(buff, sizeof(buff), " %s",
- PCEP_VTYSH_ARG_PCEPLIB);
- vty_out(vty, "debug pathd pcep%s\n", buff);
- buff[0] = 0;
- return 1;
- }
-
- return 0;
-}
-
-int pcep_cli_debug_set_all(uint32_t flags, bool set)
-{
- DEBUG_FLAGS_SET(&pcep_g->dbg, flags, set);
-
- /* If all modes have been turned off, don't preserve options. */
- if (!DEBUG_MODE_CHECK(&pcep_g->dbg, DEBUG_MODE_ALL))
- DEBUG_CLEAR(&pcep_g->dbg);
-
- return 0;
-}
-
int pcep_cli_pcep_config_write(struct vty *vty)
{
vty_out(vty, " pcep\n");
@@ -2006,36 +1952,9 @@ int pcep_cli_pcep_pce_config_write(struct vty *vty)
* The param names are taken from the path_pcep_cli_clippy.c generated file.
*/
-DEFPY(show_debugging_pathd_pcep,
- show_debugging_pathd_pcep_cmd,
- "show debugging pathd-pcep",
- SHOW_STR
- "State of each debugging option\n"
- "pathd pcep module debugging\n")
-{
- vty_out(vty, "Pathd pcep debugging status:\n");
-
- if (DEBUG_MODE_CHECK(&pcep_g->dbg, DEBUG_MODE_CONF)) {
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_BASIC))
- vty_out(vty, " Pathd pcep %s debugging is on\n",
- PCEP_VTYSH_ARG_BASIC);
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PATH))
- vty_out(vty, " Pathd pcep %s debugging is on\n",
- PCEP_VTYSH_ARG_PATH);
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEP))
- vty_out(vty, " Pathd pcep %s debugging is on\n",
- PCEP_VTYSH_ARG_MESSAGE);
- if (DEBUG_FLAGS_CHECK(&pcep_g->dbg, PCEP_DEBUG_MODE_PCEPLIB))
- vty_out(vty, " Pathd pcep %s debugging is on\n",
- PCEP_VTYSH_ARG_PCEPLIB);
- }
-
- return CMD_SUCCESS;
-}
-
DEFPY(pcep_cli_debug,
pcep_cli_debug_cmd,
- "[no] debug pathd pcep [<basic|path|message|pceplib>$debug_type]",
+ "[no] debug pathd pcep [{basic$basic|path$path|message$msg|pceplib$lib}]",
NO_STR DEBUG_STR
"pathd debugging\n"
"pcep module debugging\n"
@@ -2044,7 +1963,11 @@ DEFPY(pcep_cli_debug,
"pcep message debugging\n"
"pceplib debugging\n")
{
- return path_pcep_cli_debug(vty, debug_type, !no);
+ if (strmatch(argv[argc - 1]->text, "pcep"))
+ return path_pcep_cli_debug(vty, !no, true, true, true, true);
+ else
+ return path_pcep_cli_debug(vty, !no, !!basic, !!path, !!msg,
+ !!lib);
}
DEFPY(pcep_cli_show_srte_pcep_counters,
@@ -2372,9 +2295,11 @@ DEFPY(pcep_cli_clear_srte_pcep_session,
void pcep_cli_init(void)
{
hook_register(pathd_srte_config_write, pcep_cli_pcep_config_write);
- hook_register(nb_client_debug_config_write,
- pcep_cli_debug_config_write);
- hook_register(nb_client_debug_set_all, pcep_cli_debug_set_all);
+
+ debug_install(&pcep_g->dbg_basic);
+ debug_install(&pcep_g->dbg_path);
+ debug_install(&pcep_g->dbg_msg);
+ debug_install(&pcep_g->dbg_lib);
memset(&pce_connections_g, 0, sizeof(pce_connections_g));
@@ -2423,7 +2348,6 @@ void pcep_cli_init(void)
/* Top commands */
install_element(CONFIG_NODE, &pcep_cli_debug_cmd);
install_element(ENABLE_NODE, &pcep_cli_debug_cmd);
- install_element(ENABLE_NODE, &show_debugging_pathd_pcep_cmd);
install_element(ENABLE_NODE, &pcep_cli_show_srte_pcep_counters_cmd);
install_element(ENABLE_NODE, &pcep_cli_show_srte_pcep_pce_config_cmd);
install_element(ENABLE_NODE, &pcep_cli_show_srte_pcep_pce_cmd);
diff --git a/pathd/path_ted.c b/pathd/path_ted.c
index df23f93127..0f8d3827ff 100644
--- a/pathd/path_ted.c
+++ b/pathd/path_ted.c
@@ -30,12 +30,11 @@ static uint32_t path_ted_stop_importing_igp(void);
static enum zclient_send_status path_ted_link_state_sync(void);
static void path_ted_timer_handler_sync(struct event *thread);
static void path_ted_timer_handler_refresh(struct event *thread);
-static int path_ted_cli_debug_config_write(struct vty *vty);
-static int path_ted_cli_debug_set_all(uint32_t flags, bool set);
extern struct zclient *zclient;
-struct ted_state ted_state_g = {};
+struct ted_state ted_state_g = { .dbg = { .conf = "debug pathd mpls-te",
+ .desc = "Pathd TED" } };
/*
* path_path_ted public API function implementations
@@ -335,10 +334,8 @@ DEFPY (debug_path_ted,
"ted debugging\n")
{
uint32_t mode = DEBUG_NODE2MODE(vty->node);
- bool no_debug = (no != NULL);
DEBUG_MODE_SET(&ted_state_g.dbg, mode, !no);
- DEBUG_FLAGS_SET(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC, !no_debug);
return CMD_SUCCESS;
}
@@ -466,37 +463,6 @@ DEFPY (show_pathd_ted_db,
return CMD_SUCCESS;
}
-/*
- * Config Write functions
- */
-
-int path_ted_cli_debug_config_write(struct vty *vty)
-{
- if (DEBUG_MODE_CHECK(&ted_state_g.dbg, DEBUG_MODE_CONF)) {
- if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC))
- vty_out(vty, "debug pathd mpls-te\n");
- return 1;
- }
- return 0;
-}
-
-void path_ted_show_debugging(struct vty *vty)
-{
- if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC))
- vty_out(vty, " Path TED debugging is on\n");
-}
-
-int path_ted_cli_debug_set_all(uint32_t flags, bool set)
-{
- DEBUG_FLAGS_SET(&ted_state_g.dbg, flags, set);
-
- /* If all modes have been turned off, don't preserve options. */
- if (!DEBUG_MODE_CHECK(&ted_state_g.dbg, DEBUG_MODE_ALL))
- DEBUG_CLEAR(&ted_state_g.dbg);
-
- return 0;
-}
-
/**
* Help fn to show ted related configuration
*
@@ -543,9 +509,7 @@ static void path_ted_register_vty(void)
install_element(CONFIG_NODE, &debug_path_ted_cmd);
install_element(ENABLE_NODE, &debug_path_ted_cmd);
- hook_register(nb_client_debug_config_write,
- path_ted_cli_debug_config_write);
- hook_register(nb_client_debug_set_all, path_ted_cli_debug_set_all);
+ debug_install(&ted_state_g.dbg);
}
/**
diff --git a/pathd/path_ted.h b/pathd/path_ted.h
index a1bc784b7f..7f3b3f590f 100644
--- a/pathd/path_ted.h
+++ b/pathd/path_ted.h
@@ -59,28 +59,17 @@ struct ted_state {
struct debug dbg;
};
/* Debug flags. */
-#define PATH_TED_DEBUG_BASIC 0x01
#define PATH_TED_DEBUG(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
- DEBUGD(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGD(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__)
#define PATH_TED_ERROR(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
- DEBUGE(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGE(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__)
+
#define PATH_TED_WARN(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
- DEBUGW(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGW(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__)
+
#define PATH_TED_INFO(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
- DEBUGI(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
- } while (0)
+ DEBUGI(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__)
/* TED management functions */
bool path_ted_is_initialized(void);
@@ -92,7 +81,6 @@ int path_ted_segment_list_refresh(void);
/* TED configuration functions */
uint32_t path_ted_config_write(struct vty *vty);
-void path_ted_show_debugging(struct vty *vty);
/* TED util functions */
/* clang-format off */
diff --git a/pathd/pathd.c b/pathd/pathd.c
index 9bb7dbae84..431fe4d1e3 100644
--- a/pathd/pathd.c
+++ b/pathd/pathd.c
@@ -33,15 +33,13 @@ DEFINE_HOOK(pathd_candidate_updated, (struct srte_candidate * candidate),
DEFINE_HOOK(pathd_candidate_removed, (struct srte_candidate * candidate),
(candidate));
-struct debug path_policy_debug;
+struct debug path_policy_debug = {
+ .conf = "debug pathd policy",
+ .desc = "Pathd policy",
+};
#define PATH_POLICY_DEBUG(fmt, ...) \
- do { \
- if (DEBUG_FLAGS_CHECK(&path_policy_debug, \
- PATH_POLICY_DEBUG_BASIC)) \
- DEBUGD(&path_policy_debug, "policy: " fmt, \
- ##__VA_ARGS__); \
- } while (0)
+ DEBUGD(&path_policy_debug, "policy: " fmt, ##__VA_ARGS__)
static void trigger_pathd_candidate_created(struct srte_candidate *candidate);
@@ -1281,12 +1279,6 @@ const char *srte_origin2str(enum srte_protocol_origin origin)
assert(!"Reached end of function we should never hit");
}
-void path_policy_show_debugging(struct vty *vty)
-{
- if (DEBUG_FLAGS_CHECK(&path_policy_debug, PATH_POLICY_DEBUG_BASIC))
- vty_out(vty, " Path policy debugging is on\n");
-}
-
void pathd_shutdown(void)
{
path_ted_teardown();
diff --git a/pathd/pathd.h b/pathd/pathd.h
index 73ad49226e..75e7eff920 100644
--- a/pathd/pathd.h
+++ b/pathd/pathd.h
@@ -32,8 +32,6 @@ enum srte_protocol_origin {
extern struct debug path_policy_debug;
-#define PATH_POLICY_DEBUG_BASIC 0x01
-
enum srte_policy_status {
SRTE_POLICY_STATUS_UNKNOWN = 0,
SRTE_POLICY_STATUS_DOWN = 1,
@@ -437,7 +435,6 @@ void srte_candidate_status_update(struct srte_candidate *candidate, int status);
void srte_candidate_unset_segment_list(const char *originator, bool force);
const char *srte_origin2str(enum srte_protocol_origin origin);
void pathd_shutdown(void);
-void path_policy_show_debugging(struct vty *vty);
/* path_cli.c */
void path_cli_init(void);
diff --git a/pbrd/pbr_debug.c b/pbrd/pbr_debug.c
index b30b54b7f0..6b0d1d5a81 100644
--- a/pbrd/pbr_debug.c
+++ b/pbrd/pbr_debug.c
@@ -13,53 +13,16 @@
#include "pbrd/pbr_debug_clippy.c"
#include "pbrd/pbr_debug.h"
-struct debug pbr_dbg_map = {0, "PBR map"};
-struct debug pbr_dbg_zebra = {0, "PBR Zebra communications"};
-struct debug pbr_dbg_nht = {0, "PBR nexthop tracking"};
-struct debug pbr_dbg_event = {0, "PBR events"};
-
-struct debug *pbr_debugs[] = {&pbr_dbg_map, &pbr_dbg_zebra, &pbr_dbg_nht,
- &pbr_dbg_event};
-
-const char *pbr_debugs_conflines[] = {
- "debug pbr map",
- "debug pbr zebra",
- "debug pbr nht",
- "debug pbr events",
-};
-
-void pbr_debug_set_all(uint32_t flags, bool set)
-{
- for (unsigned int i = 0; i < array_size(pbr_debugs); i++) {
- DEBUG_FLAGS_SET(pbr_debugs[i], flags, set);
-
- /* if all modes have been turned off, don't preserve options */
- if (!DEBUG_MODE_CHECK(pbr_debugs[i], DEBUG_MODE_ALL))
- DEBUG_CLEAR(pbr_debugs[i]);
- }
-}
-
-int pbr_debug_config_write_helper(struct vty *vty, bool config)
-{
- uint32_t mode = DEBUG_MODE_ALL;
-
- if (config)
- mode = DEBUG_MODE_CONF;
-
- for (unsigned int i = 0; i < array_size(pbr_debugs); i++)
- if (DEBUG_MODE_CHECK(pbr_debugs[i], mode))
- vty_out(vty, "%s\n", pbr_debugs_conflines[i]);
- return 0;
-}
-
-int pbr_debug_config_write(struct vty *vty)
-{
- return pbr_debug_config_write_helper(vty, true);
-}
-
-struct debug_callbacks pbr_dbg_cbs = {.debug_set_all = pbr_debug_set_all};
+struct debug pbr_dbg_map = { 0, "debug pbr map", "PBR map" };
+struct debug pbr_dbg_zebra = { 0, "debug pbr zebra",
+ "PBR Zebra communications" };
+struct debug pbr_dbg_nht = { 0, "debug pbr nht", "PBR nexthop tracking" };
+struct debug pbr_dbg_event = { 0, "debug pbr events", "PBR events" };
void pbr_debug_init(void)
{
- debug_init(&pbr_dbg_cbs);
+ debug_install(&pbr_dbg_map);
+ debug_install(&pbr_dbg_zebra);
+ debug_install(&pbr_dbg_nht);
+ debug_install(&pbr_dbg_event);
}
diff --git a/pbrd/pbr_debug.h b/pbrd/pbr_debug.h
index 09109971d2..c1ffce99b8 100644
--- a/pbrd/pbr_debug.h
+++ b/pbrd/pbr_debug.h
@@ -35,26 +35,4 @@ void pbr_debug_init(void);
*/
void pbr_debug_set_all(uint32_t flags, bool set);
-/*
- * Config write helper.
- *
- * vty
- * Vty to write to
- *
- * config
- * Whether we are writing to show run or saving config file
- *
- * Returns:
- * 0 for convenience
- */
-int pbr_debug_config_write_helper(struct vty *vty, bool config);
-
-/*
- * Print PBR debugging configuration.
- *
- * vty
- * VTY to print debugging configuration to.
- */
-int pbr_debug_config_write(struct vty *vty);
-
#endif /* __PBR_DEBUG_H__ */
diff --git a/pbrd/pbr_vty.c b/pbrd/pbr_vty.c
index 64d88847c8..08fe56c7bb 100644
--- a/pbrd/pbr_vty.c
+++ b/pbrd/pbr_vty.c
@@ -1954,13 +1954,6 @@ DEFPY (show_pbr_interface,
/* PBR debugging CLI ------------------------------------------------------- */
-static struct cmd_node debug_node = {
- .name = "debug",
- .node = DEBUG_NODE,
- .prompt = "",
- .config_write = pbr_debug_config_write,
-};
-
DEFPY(debug_pbr,
debug_pbr_cmd,
"[no] debug pbr [{map$map|zebra$zebra|nht$nht|events$events}]",
@@ -1973,20 +1966,21 @@ DEFPY(debug_pbr,
"Events\n")
{
uint32_t mode = DEBUG_NODE2MODE(vty->node);
+ bool all = false;
+
+ /* no specific debug --> act on all of them */
+ if (strmatch(argv[argc - 1]->text, "pbr"))
+ all = true;
- if (map)
+ if (map || all)
DEBUG_MODE_SET(&pbr_dbg_map, mode, !no);
- if (zebra)
+ if (zebra || all)
DEBUG_MODE_SET(&pbr_dbg_zebra, mode, !no);
- if (nht)
+ if (nht || all)
DEBUG_MODE_SET(&pbr_dbg_nht, mode, !no);
- if (events)
+ if (events || all)
DEBUG_MODE_SET(&pbr_dbg_event, mode, !no);
- /* no specific debug --> act on all of them */
- if (strmatch(argv[argc - 1]->text, "pbr"))
- pbr_debug_set_all(mode, !no);
-
return CMD_SUCCESS;
}
@@ -1999,8 +1993,6 @@ DEFUN_NOSH(show_debugging_pbr,
{
vty_out(vty, "PBR debugging status:\n");
- pbr_debug_config_write_helper(vty, false);
-
cmd_show_lib_debugs(vty);
return CMD_SUCCESS;
@@ -2194,7 +2186,6 @@ void pbr_vty_init(void)
install_node(&pbr_map_node);
/* debug */
- install_node(&debug_node);
install_element(ENABLE_NODE, &debug_pbr_cmd);
install_element(CONFIG_NODE, &debug_pbr_cmd);
install_element(ENABLE_NODE, &show_debugging_pbr_cmd);
diff --git a/staticd/static_debug.c b/staticd/static_debug.c
index a65752c958..618ba91d12 100644
--- a/staticd/static_debug.c
+++ b/staticd/static_debug.c
@@ -19,68 +19,11 @@
*/
/* clang-format off */
-struct debug static_dbg_events = {0, "Staticd events"};
-struct debug static_dbg_route = {0, "Staticd route"};
-struct debug static_dbg_bfd = {0, "Staticd bfd"};
-
-struct debug *static_debug_arr[] = {
- &static_dbg_events,
- &static_dbg_route,
- &static_dbg_bfd
-};
-
-const char *static_debugs_conflines[] = {
- "debug static events",
- "debug static route",
- "debug static bfd"
-};
+struct debug static_dbg_events = {0, "debug static events", "Staticd events"};
+struct debug static_dbg_route = {0, "debug static route", "Staticd route"};
+struct debug static_dbg_bfd = {0, "debug static bfd", "Staticd bfd"};
/* clang-format on */
-
-/*
- * Set or unset all staticd debugs
- *
- * flags
- * The flags to set
- *
- * set
- * Whether to set or unset the specified flags
- */
-static void static_debug_set_all(uint32_t flags, bool set)
-{
- for (unsigned int i = 0; i < array_size(static_debug_arr); i++) {
- DEBUG_FLAGS_SET(static_debug_arr[i], flags, set);
-
- /* if all modes have been turned off, don't preserve options */
- if (!DEBUG_MODE_CHECK(static_debug_arr[i], DEBUG_MODE_ALL))
- DEBUG_CLEAR(static_debug_arr[i]);
- }
-}
-
-static int static_debug_config_write_helper(struct vty *vty, bool config)
-{
- uint32_t mode = DEBUG_MODE_ALL;
-
- if (config)
- mode = DEBUG_MODE_CONF;
-
- for (unsigned int i = 0; i < array_size(static_debug_arr); i++)
- if (DEBUG_MODE_CHECK(static_debug_arr[i], mode))
- vty_out(vty, "%s\n", static_debugs_conflines[i]);
-
- return 0;
-}
-
-int static_config_write_debug(struct vty *vty)
-{
- return static_debug_config_write_helper(vty, true);
-}
-
-int static_debug_status_write(struct vty *vty)
-{
- return static_debug_config_write_helper(vty, false);
-}
-
/*
* Set debugging status.
*
@@ -113,11 +56,9 @@ void static_debug_set(int vtynode, bool onoff, bool events, bool route,
* Debug lib initialization
*/
-struct debug_callbacks static_dbg_cbs = {
- .debug_set_all = static_debug_set_all
-};
-
void static_debug_init(void)
{
- debug_init(&static_dbg_cbs);
+ debug_install(&static_dbg_events);
+ debug_install(&static_dbg_route);
+ debug_install(&static_dbg_bfd);
}
diff --git a/staticd/static_debug.h b/staticd/static_debug.h
index c9100680f7..b990f7bcc9 100644
--- a/staticd/static_debug.h
+++ b/staticd/static_debug.h
@@ -29,22 +29,6 @@ extern struct debug static_dbg_bfd;
void static_debug_init(void);
/*
- * Print staticd debugging configuration.
- *
- * vty
- * VTY to print debugging configuration to.
- */
-int static_config_write_debug(struct vty *vty);
-
-/*
- * Print staticd debugging configuration, human readable form.
- *
- * vty
- * VTY to print debugging configuration to.
- */
-int static_debug_status_write(struct vty *vty);
-
-/*
* Set debugging status.
*
* vtynode
diff --git a/staticd/static_vty.c b/staticd/static_vty.c
index a18028ed08..07b8bc3d28 100644
--- a/staticd/static_vty.c
+++ b/staticd/static_vty.c
@@ -1639,26 +1639,16 @@ DEFUN_NOSH (show_debugging_static,
{
vty_out(vty, "Staticd debugging status\n");
- static_debug_status_write(vty);
-
cmd_show_lib_debugs(vty);
return CMD_SUCCESS;
}
-static struct cmd_node debug_node = {
- .name = "debug",
- .node = DEBUG_NODE,
- .prompt = "",
- .config_write = static_config_write_debug,
-};
-
#endif /* ifndef INCLUDE_MGMTD_CMDDEFS_ONLY */
void static_vty_init(void)
{
#ifndef INCLUDE_MGMTD_CMDDEFS_ONLY
- install_node(&debug_node);
install_element(ENABLE_NODE, &debug_staticd_cmd);
install_element(CONFIG_NODE, &debug_staticd_cmd);
install_element(ENABLE_NODE, &show_debugging_static_cmd);
diff --git a/tests/bgpd/test_peer_attr.c b/tests/bgpd/test_peer_attr.c
index 767c41cfee..d5faa33ca8 100644
--- a/tests/bgpd/test_peer_attr.c
+++ b/tests/bgpd/test_peer_attr.c
@@ -5,6 +5,7 @@
*/
#include <zebra.h>
+#include "debug.h"
#include "memory.h"
#include "plist.h"
#include "printfrr.h"
@@ -1348,6 +1349,7 @@ static void test_peer_attr(struct test *test, struct test_peer_attr *pa)
static void bgp_startup(void)
{
cmd_init(1);
+ debug_init();
zlog_aux_init("NONE: ", LOG_DEBUG);
zprivs_preinit(&bgpd_privs);
zprivs_init(&bgpd_privs);
diff --git a/tests/helpers/c/main.c b/tests/helpers/c/main.c
index fdda7f1e2a..9cb395bb1f 100644
--- a/tests/helpers/c/main.c
+++ b/tests/helpers/c/main.c
@@ -6,6 +6,7 @@
#include <sys/stat.h>
#include <lib/version.h>
+#include "debug.h"
#include "getopt.h"
#include "frrevent.h"
#include "vty.h"
@@ -141,6 +142,7 @@ int main(int argc, char **argv)
cmd_init(1);
vty_init(master, false);
lib_cmd_init();
+ debug_init();
nb_init(master, NULL, 0, false);
/* OSPF vty inits. */
diff --git a/tests/lib/cli/common_cli.c b/tests/lib/cli/common_cli.c
index f9f584f450..6401971435 100644
--- a/tests/lib/cli/common_cli.c
+++ b/tests/lib/cli/common_cli.c
@@ -9,6 +9,7 @@
#include <zebra.h>
#include <sys/stat.h>
+#include "debug.h"
#include "frrevent.h"
#include "vty.h"
#include "command.h"
@@ -71,6 +72,7 @@ int main(int argc, char **argv)
vty_init(master, false);
lib_cmd_init();
+ debug_init();
for (yangcount = 0; test_yang_modules && test_yang_modules[yangcount];
yangcount++)
diff --git a/tests/lib/cli/test_cli.refout.in b/tests/lib/cli/test_cli.refout.in
index 84365810d5..222abcdade 100644
--- a/tests/lib/cli/test_cli.refout.in
+++ b/tests/lib/cli/test_cli.refout.in
@@ -409,7 +409,6 @@ domainname test.domain
!
!
!
-!
end
test# conf t
test(config)# hostname foohost
@@ -425,7 +424,6 @@ domainname test.domain
!
!
!
-!
end
foohost(config)#
end.
diff --git a/tests/lib/cli/test_commands.c b/tests/lib/cli/test_commands.c
index ea84120fc1..0034c2af89 100644
--- a/tests/lib/cli/test_commands.c
+++ b/tests/lib/cli/test_commands.c
@@ -21,6 +21,7 @@
#include <stdlib.h>
#include <unistd.h>
+#include "debug.h"
#include "command.h"
#include "memory.h"
#include "vector.h"
@@ -195,6 +196,7 @@ static void test_init(void)
struct cmd_element *cmd;
cmd_init(1);
+ debug_init();
nb_init(master, NULL, 0, false);
install_node(&bgp_node);
diff --git a/tests/lib/northbound/test_oper_data.c b/tests/lib/northbound/test_oper_data.c
index 321f158668..74a0dfe6cc 100644
--- a/tests/lib/northbound/test_oper_data.c
+++ b/tests/lib/northbound/test_oper_data.c
@@ -7,6 +7,7 @@
#include <zebra.h>
#include <sys/stat.h>
+#include "debug.h"
#include "frrevent.h"
#include "vty.h"
#include "command.h"
@@ -459,6 +460,7 @@ int main(int argc, char **argv)
cmd_hostname_set("test");
vty_init(master, false);
lib_cmd_init();
+ debug_init();
nb_init(master, modules, array_size(modules), false);
install_element(ENABLE_NODE, &test_rpc_cmd);
diff --git a/tests/lib/test_grpc.cpp b/tests/lib/test_grpc.cpp
index 202313603d..2f0282704e 100644
--- a/tests/lib/test_grpc.cpp
+++ b/tests/lib/test_grpc.cpp
@@ -9,6 +9,7 @@
#include <unistd.h>
#include <zebra.h>
+#include "debug.h"
#include "filter.h"
#include "frr_pthread.h"
#include "libfrr.h"
@@ -79,6 +80,7 @@ static void static_startup(void)
// static struct option_chain *oc;
cmd_init(1);
+ debug_init();
zlog_aux_init("NONE: ", LOG_DEBUG);
zprivs_preinit(&static_privs);
diff --git a/tests/topotests/isis_topo1/test_isis_topo1.py b/tests/topotests/isis_topo1/test_isis_topo1.py
index a574f43d89..1cec2f16f0 100644
--- a/tests/topotests/isis_topo1/test_isis_topo1.py
+++ b/tests/topotests/isis_topo1/test_isis_topo1.py
@@ -623,7 +623,7 @@ def test_isis_hello_padding_during_adjacency_formation():
assert result is True, result
-@retry(retry_timeout=5)
+@retry(retry_timeout=10)
def check_last_iih_packet_for_padding(router, expect_padding):
logfilename = "{}/{}".format(router.gearlogdir, "isisd.log")
last_hello_packet_line = None
diff --git a/vrrpd/vrrp_debug.c b/vrrpd/vrrp_debug.c
index a772b3b5c5..fd0edcfc77 100644
--- a/vrrpd/vrrp_debug.c
+++ b/vrrpd/vrrp_debug.c
@@ -13,79 +13,15 @@
#include "vrrp_debug.h"
/* clang-format off */
-struct debug vrrp_dbg_arp = {0, "VRRP ARP"};
-struct debug vrrp_dbg_auto = {0, "VRRP autoconfiguration events"};
-struct debug vrrp_dbg_ndisc = {0, "VRRP Neighbor Discovery"};
-struct debug vrrp_dbg_pkt = {0, "VRRP packets"};
-struct debug vrrp_dbg_proto = {0, "VRRP protocol events"};
-struct debug vrrp_dbg_sock = {0, "VRRP sockets"};
-struct debug vrrp_dbg_zebra = {0, "VRRP Zebra events"};
-
-struct debug *vrrp_debugs[] = {
- &vrrp_dbg_arp,
- &vrrp_dbg_auto,
- &vrrp_dbg_ndisc,
- &vrrp_dbg_pkt,
- &vrrp_dbg_proto,
- &vrrp_dbg_sock,
- &vrrp_dbg_zebra
-};
-
-const char *vrrp_debugs_conflines[] = {
- "debug vrrp arp",
- "debug vrrp autoconfigure",
- "debug vrrp ndisc",
- "debug vrrp packets",
- "debug vrrp protocol",
- "debug vrrp sockets",
- "debug vrrp zebra",
-};
+struct debug vrrp_dbg_arp = {0, "debug vrrp arp", "VRRP ARP"};
+struct debug vrrp_dbg_auto = {0, "debug vrrp autoconfigure", "VRRP autoconfiguration events"};
+struct debug vrrp_dbg_ndisc = {0, "debug vrrp ndisc", "VRRP Neighbor Discovery"};
+struct debug vrrp_dbg_pkt = {0, "debug vrrp packets", "VRRP packets"};
+struct debug vrrp_dbg_proto = {0, "debug vrrp protocol", "VRRP protocol events"};
+struct debug vrrp_dbg_sock = {0, "debug vrrp sockets", "VRRP sockets"};
+struct debug vrrp_dbg_zebra = {0, "debug vrrp zebra", "VRRP Zebra events"};
/* clang-format on */
-/*
- * Set or unset flags on all debugs for vrrpd.
- *
- * flags
- * The flags to set
- *
- * set
- * Whether to set or unset the specified flags
- */
-static void vrrp_debug_set_all(uint32_t flags, bool set)
-{
- for (unsigned int i = 0; i < array_size(vrrp_debugs); i++) {
- DEBUG_FLAGS_SET(vrrp_debugs[i], flags, set);
-
- /* if all modes have been turned off, don't preserve options */
- if (!DEBUG_MODE_CHECK(vrrp_debugs[i], DEBUG_MODE_ALL))
- DEBUG_CLEAR(vrrp_debugs[i]);
- }
-}
-
-static int vrrp_debug_config_write_helper(struct vty *vty, bool config)
-{
- uint32_t mode = DEBUG_MODE_ALL;
-
- if (config)
- mode = DEBUG_MODE_CONF;
-
- for (unsigned int i = 0; i < array_size(vrrp_debugs); i++)
- if (DEBUG_MODE_CHECK(vrrp_debugs[i], mode))
- vty_out(vty, "%s\n", vrrp_debugs_conflines[i]);
-
- return 0;
-}
-
-int vrrp_config_write_debug(struct vty *vty)
-{
- return vrrp_debug_config_write_helper(vty, true);
-}
-
-int vrrp_debug_status_write(struct vty *vty)
-{
- return vrrp_debug_config_write_helper(vty, false);
-}
-
void vrrp_debug_set(struct interface *ifp, uint8_t vrid, int vtynode,
bool onoff, bool proto, bool autoconf, bool pkt, bool sock,
bool ndisc, bool arp, bool zebra)
@@ -110,9 +46,13 @@ void vrrp_debug_set(struct interface *ifp, uint8_t vrid, int vtynode,
/* ------------------------------------------------------------------------- */
-struct debug_callbacks vrrp_dbg_cbs = {.debug_set_all = vrrp_debug_set_all};
-
void vrrp_debug_init(void)
{
- debug_init(&vrrp_dbg_cbs);
+ debug_install(&vrrp_dbg_arp);
+ debug_install(&vrrp_dbg_auto);
+ debug_install(&vrrp_dbg_ndisc);
+ debug_install(&vrrp_dbg_pkt);
+ debug_install(&vrrp_dbg_proto);
+ debug_install(&vrrp_dbg_sock);
+ debug_install(&vrrp_dbg_zebra);
}
diff --git a/vrrpd/vrrp_debug.h b/vrrpd/vrrp_debug.h
index c1421ebbaa..c8b4c897f0 100644
--- a/vrrpd/vrrp_debug.h
+++ b/vrrpd/vrrp_debug.h
@@ -28,14 +28,6 @@ extern struct debug vrrp_dbg_zebra;
void vrrp_debug_init(void);
/*
- * Print VRRP debugging configuration.
- *
- * vty
- * VTY to print debugging configuration to.
- */
-int vrrp_config_write_debug(struct vty *vty);
-
-/*
* Print VRRP debugging configuration, human readable form.
*
* vty
diff --git a/vrrpd/vrrp_vty.c b/vrrpd/vrrp_vty.c
index fd6cbc8b67..985354af37 100644
--- a/vrrpd/vrrp_vty.c
+++ b/vrrpd/vrrp_vty.c
@@ -738,8 +738,6 @@ DEFUN_NOSH (show_debugging_vrrp,
{
vty_out(vty, "VRRP debugging status:\n");
- vrrp_debug_status_write(vty);
-
cmd_show_lib_debugs(vty);
return CMD_SUCCESS;
@@ -747,13 +745,6 @@ DEFUN_NOSH (show_debugging_vrrp,
/* clang-format on */
-static struct cmd_node debug_node = {
- .name = "debug",
- .node = DEBUG_NODE,
- .prompt = "",
- .config_write = vrrp_config_write_debug,
-};
-
static struct cmd_node vrrp_node = {
.name = "vrrp",
.node = VRRP_NODE,
@@ -763,7 +754,6 @@ static struct cmd_node vrrp_node = {
void vrrp_vty_init(void)
{
- install_node(&debug_node);
install_node(&vrrp_node);
vrf_cmd_init(NULL);
if_cmd_init_default();
diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
index 8f7cd84818..6536e1b376 100644
--- a/vtysh/vtysh_config.c
+++ b/vtysh/vtysh_config.c
@@ -453,10 +453,6 @@ void vtysh_config_parse_line(void *arg, const char *line)
config = config_get(FORWARDING_NODE, line);
else if (strncmp(line, "debug vrf", strlen("debug vrf")) == 0)
config = config_get(VRF_DEBUG_NODE, line);
- else if (strncmp(line, "debug northbound",
- strlen("debug northbound"))
- == 0)
- config = config_get(NORTHBOUND_DEBUG_NODE, line);
else if (strncmp(line, "debug route-map",
strlen("debug route-map"))
== 0)
@@ -464,12 +460,6 @@ 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
@@ -537,9 +527,8 @@ void vtysh_config_parse_line(void *arg, const char *line)
(I) == ACCESS_IPV6_NODE || (I) == ACCESS_MAC_NODE || \
(I) == PREFIX_IPV6_NODE || (I) == FORWARDING_NODE || \
(I) == DEBUG_NODE || (I) == AAA_NODE || (I) == VRF_DEBUG_NODE || \
- (I) == NORTHBOUND_DEBUG_NODE || (I) == RMAP_DEBUG_NODE || \
- (I) == RESOLVER_DEBUG_NODE || (I) == MPLS_NODE || \
- (I) == KEYCHAIN_KEY_NODE)
+ (I) == RMAP_DEBUG_NODE || (I) == RESOLVER_DEBUG_NODE || \
+ (I) == MPLS_NODE || (I) == KEYCHAIN_KEY_NODE)
static void configvec_dump(vector vec, bool nested)
{
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index b4baee148a..de8af3c9df 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -4413,7 +4413,8 @@ int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p,
return -1;
}
- if (ifp->ifindex == ng->nexthop->ifindex)
+ if (ng && ng->nexthop &&
+ ifp->ifindex == ng->nexthop->ifindex)
re->type = ZEBRA_ROUTE_CONNECT;
}
}