]> git.proxmox.com Git - mirror_frr.git/commitdiff
lib, vtysh: add new libyang option to the "debug northbound" command
authorRenato Westphal <renato@opensourcerouting.org>
Wed, 16 Oct 2019 19:59:54 +0000 (16:59 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Wed, 16 Oct 2019 20:11:41 +0000 (17:11 -0300)
Guard the libyang debug messages under this command so that only
people interested on those messages will see them.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
lib/northbound_cli.c
lib/yang.c
lib/yang.h
vtysh/vtysh.c

index 61919f0229f31e56b371a10bcf30c837091f00bf..d3e788d5d39ad6f00b36dbef5b69dd37b2d89f5e 100644 (file)
@@ -40,6 +40,7 @@ struct debug nb_dbg_cbs_state = {0, "Northbound callbacks: state"};
 struct debug nb_dbg_cbs_rpc = {0, "Northbound callbacks: RPCs"};
 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 nb_config *vty_shared_candidate_config;
 static struct thread_master *master;
@@ -1581,7 +1582,7 @@ 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_notif,      &nb_dbg_events,
+       &nb_dbg_notif,      &nb_dbg_events,    &nb_dbg_libyang,
 };
 
 static const char *const nb_debugs_conflines[] = {
@@ -1590,6 +1591,7 @@ static const char *const nb_debugs_conflines[] = {
        "debug northbound callbacks rpc",
        "debug northbound notifications",
        "debug northbound events",
+       "debug northbound libyang",
 };
 
 DEFINE_HOOK(nb_client_debug_set_all, (uint32_t flags, bool set), (flags, set));
@@ -1614,6 +1616,7 @@ DEFPY (debug_nb,
            callbacks$cbs [{configuration$cbs_cfg|state$cbs_state|rpc$cbs_rpc}]\
            |notifications$notifications\
            |events$events\
+           |libyang$libyang\
           >]",
        NO_STR
        DEBUG_STR
@@ -1623,7 +1626,8 @@ DEFPY (debug_nb,
        "State\n"
        "RPC\n"
        "Notifications\n"
-       "Events\n")
+       "Events\n"
+       "libyang debugging\n")
 {
        uint32_t mode = DEBUG_NODE2MODE(vty->node);
 
@@ -1641,10 +1645,16 @@ DEFPY (debug_nb,
                DEBUG_MODE_SET(&nb_dbg_notif, mode, !no);
        if (events)
                DEBUG_MODE_SET(&nb_dbg_events, mode, !no);
+       if (libyang) {
+               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"))
+       if (strmatch(argv[argc - 1]->text, "northbound")) {
                nb_debug_set_all(mode, !no);
+               yang_debugging_set(!no);
+       }
 
        return CMD_SUCCESS;
 }
index 5470762ea6fa670ed1963eeb7f13656d62c46c0c..d153f755305a49a77f399bc7517b7f4130b7c394 100644 (file)
@@ -616,6 +616,17 @@ static void ly_log_cb(LY_LOG_LEVEL level, const char *msg, const char *path)
                zlog(priority, "libyang: %s", msg);
 }
 
+void yang_debugging_set(bool enable)
+{
+       if (enable) {
+               ly_verb(LY_LLDBG);
+               ly_verb_dbg(0xFF);
+       } else {
+               ly_verb(LY_LLERR);
+               ly_verb_dbg(0);
+       }
+}
+
 struct ly_ctx *yang_ctx_new_setup(void)
 {
        struct ly_ctx *ctx;
@@ -645,10 +656,6 @@ void yang_init(void)
        ly_set_log_clb(ly_log_cb, 1);
        ly_log_options(LY_LOLOG | LY_LOSTORE);
 
-       /* Let libyang log everything possible. */
-       ly_verb(LY_LLDBG);
-       ly_verb_dbg(0xFF);
-
        /* Initialize libyang container for native models. */
        ly_native_ctx = yang_ctx_new_setup();
        if (!ly_native_ctx) {
index 322c74c76a5fe6458bd7d303cf81479a02736106..6892e36019731b6fd4dfdc9f6c8b7e2fbc0fa90b 100644 (file)
@@ -485,6 +485,14 @@ extern struct yang_data *yang_data_list_find(const struct list *list,
  */
 extern struct ly_ctx *yang_ctx_new_setup(void);
 
+/*
+ * Enable or disable libyang verbose debugging.
+ *
+ * enable
+ *    When set to true, enable libyang verbose debugging, otherwise disable it.
+ */
+extern void yang_debugging_set(bool enable);
+
 /*
  * Initialize the YANG subsystem. Should be called only once during the
  * daemon initialization process.
index d315fe29001fba91a0590bbcf30177cc3cfe4174..9f339f58b337d692af180ae0ad60db1f0f2aa02e 100644 (file)
@@ -2457,6 +2457,7 @@ DEFUNSH(VTYSH_ALL, debug_nb,
            callbacks [{configuration|state|rpc}]\
            |notifications\
            |events\
+           |libyang\
           >]",
        NO_STR
        DEBUG_STR
@@ -2466,7 +2467,8 @@ DEFUNSH(VTYSH_ALL, debug_nb,
        "State\n"
        "RPC\n"
        "Notifications\n"
-       "Events\n")
+       "Events\n"
+       "libyang debugging\n")
 {
        return CMD_SUCCESS;
 }