3 * Copyright (C) 2018 Cumulus Networks, Inc.
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 2 of the License, or (at your option)
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 * You should have received a copy of the GNU General Public License along
17 * with this program; see the file COPYING; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 static struct debug_cb_list_head cb_head
;
27 DECLARE_LIST(debug_cb_list
, struct debug_callbacks
, item
);
29 /* All code in this section should be reentrant and MT-safe */
31 DEFUN_NOSH(debug_all
, debug_all_cmd
, "[no] debug all",
32 NO_STR DEBUG_STR
"Toggle all debugging output\n")
34 struct debug_callbacks
*cb
;
36 bool set
= !strmatch(argv
[0]->text
, "no");
37 uint32_t mode
= DEBUG_NODE2MODE(vty
->node
);
39 frr_each (debug_cb_list
, &cb_head
, cb
)
40 cb
->debug_set_all(mode
, set
);
45 /* ------------------------------------------------------------------------- */
47 void debug_init(struct debug_callbacks
*cb
)
49 static bool inited
= false;
53 debug_cb_list_init(&cb_head
);
56 debug_cb_list_add_head(&cb_head
, cb
);
59 void debug_init_cli(void)
61 install_element(ENABLE_NODE
, &debug_all_cmd
);
62 install_element(CONFIG_NODE
, &debug_all_cmd
);