1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Copyright 2016, LabN Consulting, L.L.C.
9 #include "lib/prefix.h"
10 #include "lib/linklist.h"
11 #include "lib/stream.h"
12 #include "lib/command.h"
14 #include "bgpd/rfapi/vnc_debug.h"
19 unsigned long conf_vnc_debug
;
20 unsigned long term_vnc_debug
;
27 static const struct vnc_debug vncdebug
[] = {
28 {VNC_DEBUG_RFAPI_QUERY
, "rfapi-query"},
29 {VNC_DEBUG_IMPORT_BI_ATTACH
, "import-bi-attach"},
30 {VNC_DEBUG_IMPORT_DEL_REMOTE
, "import-del-remote"},
31 {VNC_DEBUG_EXPORT_BGP_GETCE
, "export-bgp-getce"},
32 {VNC_DEBUG_EXPORT_BGP_DIRECT_ADD
, "export-bgp-direct-add"},
33 {VNC_DEBUG_IMPORT_BGP_ADD_ROUTE
, "import-bgp-add-route"},
34 {VNC_DEBUG_VERBOSE
, "verbose"},
37 #define VNC_STR "VNC information\n"
39 /***********************************************************************
41 ***********************************************************************/
44 "debug bgp vnc <rfapi-query|import-bi-attach|import-del-remote|verbose>",
48 "rfapi query handling\n"
49 "import BI atachment\n"
50 "import delete remote routes\n"
55 for (i
= 0; i
< (sizeof(vncdebug
) / sizeof(struct vnc_debug
)); ++i
) {
56 if (strmatch(argv
[3]->text
, vncdebug
[i
].name
)) {
57 if (vty
->node
== CONFIG_NODE
) {
58 conf_vnc_debug
|= vncdebug
[i
].bit
;
59 term_vnc_debug
|= vncdebug
[i
].bit
;
61 term_vnc_debug
|= vncdebug
[i
].bit
;
62 vty_out(vty
, "BGP vnc %s debugging is on\n",
68 vty_out(vty
, "Unknown debug flag: %s\n", argv
[3]->arg
);
69 return CMD_WARNING_CONFIG_FAILED
;
72 DEFUN (no_debug_bgp_vnc
,
74 "no debug bgp vnc <rfapi-query|import-bi-attach|import-del-remote|verbose>",
79 "rfapi query handling\n"
80 "import BI atachment\n"
81 "import delete remote routes\n"
86 for (i
= 0; i
< (sizeof(vncdebug
) / sizeof(struct vnc_debug
)); ++i
) {
87 if (strmatch(argv
[argc
- 1]->text
, vncdebug
[i
].name
)) {
88 if (vty
->node
== CONFIG_NODE
) {
89 conf_vnc_debug
&= ~vncdebug
[i
].bit
;
90 term_vnc_debug
&= ~vncdebug
[i
].bit
;
92 term_vnc_debug
&= ~vncdebug
[i
].bit
;
93 vty_out(vty
, "BGP vnc %s debugging is off\n",
99 vty_out(vty
, "Unknown debug flag: %s\n", argv
[3]->arg
);
100 return CMD_WARNING_CONFIG_FAILED
;
103 /***********************************************************************
104 * no debug bgp vnc all
105 ***********************************************************************/
107 DEFUN (no_debug_bgp_vnc_all
,
108 no_debug_bgp_vnc_all_cmd
,
109 "no debug all bgp vnc",
112 "Disable all VNC debugging\n"
117 vty_out(vty
, "All possible VNC debugging has been turned off\n");
122 /***********************************************************************
124 ***********************************************************************/
126 DEFUN_NOSH (show_debugging_bgp_vnc
,
127 show_debugging_bgp_vnc_cmd
,
128 "show debugging bgp vnc",
136 vty_out(vty
, "BGP VNC debugging status:\n");
138 for (i
= 0; i
< (sizeof(vncdebug
) / sizeof(struct vnc_debug
)); ++i
) {
139 if (term_vnc_debug
& vncdebug
[i
].bit
) {
140 vty_out(vty
, " BGP VNC %s debugging is on\n",
148 static int bgp_vnc_config_write_debug(struct vty
*vty
)
153 for (i
= 0; i
< array_size(vncdebug
); ++i
) {
154 if (conf_vnc_debug
& vncdebug
[i
].bit
) {
155 vty_out(vty
, "debug bgp vnc %s\n", vncdebug
[i
].name
);
162 static int bgp_vnc_config_write_debug(struct vty
*vty
);
163 static struct cmd_node debug_node
= {
165 .node
= DEBUG_VNC_NODE
,
167 .config_write
= bgp_vnc_config_write_debug
,
170 void vnc_debug_init(void)
172 install_node(&debug_node
);
173 install_element(ENABLE_NODE
, &show_debugging_bgp_vnc_cmd
);
175 install_element(ENABLE_NODE
, &debug_bgp_vnc_cmd
);
176 install_element(CONFIG_NODE
, &debug_bgp_vnc_cmd
);
177 install_element(ENABLE_NODE
, &no_debug_bgp_vnc_cmd
);
178 install_element(CONFIG_NODE
, &no_debug_bgp_vnc_cmd
);
180 install_element(ENABLE_NODE
, &no_debug_bgp_vnc_all_cmd
);
181 install_element(CONFIG_NODE
, &no_debug_bgp_vnc_all_cmd
);