2 * Zebra debug related function
3 * Copyright (C) 1999 Kunihiro Ishiguro
5 * This file is part of GNU Zebra.
7 * GNU Zebra is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2, or (at your option) any
12 * GNU Zebra is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Zebra; see the file COPYING. If not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
27 /* For debug statement. */
28 unsigned long zebra_debug_event
;
29 unsigned long zebra_debug_packet
;
30 unsigned long zebra_debug_kernel
;
31 unsigned long zebra_debug_rib
;
32 unsigned long zebra_debug_fpm
;
33 unsigned long zebra_debug_nht
;
34 unsigned long zebra_debug_mpls
;
36 DEFUN (show_debugging_zebra
,
37 show_debugging_zebra_cmd
,
38 "show debugging zebra",
40 "Debugging information\n"
41 "Zebra configuration\n")
43 vty_out (vty
, "Zebra debugging status:%s", VTY_NEWLINE
);
45 if (IS_ZEBRA_DEBUG_EVENT
)
46 vty_out (vty
, " Zebra event debugging is on%s", VTY_NEWLINE
);
48 if (IS_ZEBRA_DEBUG_PACKET
)
50 if (IS_ZEBRA_DEBUG_SEND
&& IS_ZEBRA_DEBUG_RECV
)
52 vty_out (vty
, " Zebra packet%s debugging is on%s",
53 IS_ZEBRA_DEBUG_DETAIL
? " detail" : "",
58 if (IS_ZEBRA_DEBUG_SEND
)
59 vty_out (vty
, " Zebra packet send%s debugging is on%s",
60 IS_ZEBRA_DEBUG_DETAIL
? " detail" : "",
63 vty_out (vty
, " Zebra packet receive%s debugging is on%s",
64 IS_ZEBRA_DEBUG_DETAIL
? " detail" : "",
69 if (IS_ZEBRA_DEBUG_KERNEL
)
70 vty_out (vty
, " Zebra kernel debugging is on%s", VTY_NEWLINE
);
71 if (IS_ZEBRA_DEBUG_KERNEL_MSGDUMP_SEND
)
72 vty_out (vty
, " Zebra kernel netlink message dumps (send) are on%s", VTY_NEWLINE
);
73 if (IS_ZEBRA_DEBUG_KERNEL_MSGDUMP_RECV
)
74 vty_out (vty
, " Zebra kernel netlink message dumps (recv) are on%s", VTY_NEWLINE
);
76 /* Check here using flags as the 'macro' does an OR */
77 if (CHECK_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB
))
78 vty_out (vty
, " Zebra RIB debugging is on%s", VTY_NEWLINE
);
79 if (CHECK_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB_DETAILED
))
80 vty_out (vty
, " Zebra RIB detailed debugging is on%s", VTY_NEWLINE
);
82 if (IS_ZEBRA_DEBUG_FPM
)
83 vty_out (vty
, " Zebra FPM debugging is on%s", VTY_NEWLINE
);
84 if (IS_ZEBRA_DEBUG_NHT
)
85 vty_out (vty
, " Zebra next-hop tracking debugging is on%s", VTY_NEWLINE
);
86 if (IS_ZEBRA_DEBUG_MPLS
)
87 vty_out (vty
, " Zebra MPLS debugging is on%s", VTY_NEWLINE
);
92 DEFUN (debug_zebra_events
,
93 debug_zebra_events_cmd
,
96 "Zebra configuration\n"
97 "Debug option set for zebra events\n")
99 zebra_debug_event
= ZEBRA_DEBUG_EVENT
;
103 DEFUN (debug_zebra_nht
,
107 "Zebra configuration\n"
108 "Debug option set for zebra next hop tracking\n")
110 zebra_debug_nht
= ZEBRA_DEBUG_NHT
;
114 DEFUN (debug_zebra_mpls
,
115 debug_zebra_mpls_cmd
,
118 "Zebra configuration\n"
119 "Debug option set for zebra MPLS LSPs\n")
121 zebra_debug_mpls
= ZEBRA_DEBUG_MPLS
;
125 DEFUN (debug_zebra_packet
,
126 debug_zebra_packet_cmd
,
127 "debug zebra packet [<recv|send>] [detail]",
129 "Zebra configuration\n"
130 "Debug option set for zebra packet\n"
131 "Debug option set for receive packet\n"
132 "Debug option set for send packet\n"
133 "Debug option set for detailed info\n")
136 zebra_debug_packet
= ZEBRA_DEBUG_PACKET
;
138 if (argv_find (argv
, argc
, "send", &idx
))
139 SET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_SEND
);
141 if (argv_find (argv
, argc
, "recv", &idx
))
142 SET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_RECV
);
144 if (argv_find (argv
, argc
, "detail", &idx
))
145 SET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_DETAIL
);
147 if (!(zebra_debug_packet
& ZEBRA_DEBUG_SEND
& ZEBRA_DEBUG_RECV
))
149 SET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_SEND
);
150 SET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_RECV
);
155 DEFUN (debug_zebra_kernel
,
156 debug_zebra_kernel_cmd
,
157 "debug zebra kernel",
159 "Zebra configuration\n"
160 "Debug option set for zebra between kernel interface\n")
162 SET_FLAG(zebra_debug_kernel
, ZEBRA_DEBUG_KERNEL
);
166 DEFUN (debug_zebra_kernel_msgdump
,
167 debug_zebra_kernel_msgdump_cmd
,
168 "debug zebra kernel msgdump [<recv|send>]",
170 "Zebra configuration\n"
171 "Debug option set for zebra between kernel interface\n"
172 "Dump raw netlink messages, sent and received\n"
173 "Dump raw netlink messages received\n"
174 "Dump raw netlink messages sent\n")
177 if (argc
== 4 || argv_find (argv
, argc
, "recv", &idx
))
178 SET_FLAG(zebra_debug_kernel
, ZEBRA_DEBUG_KERNEL_MSGDUMP_RECV
);
179 if (argc
== 4 || argv_find (argv
, argc
, "send", &idx
))
180 SET_FLAG(zebra_debug_kernel
, ZEBRA_DEBUG_KERNEL_MSGDUMP_SEND
);
185 DEFUN (debug_zebra_rib
,
189 "Zebra configuration\n"
190 "Debug RIB events\n")
192 SET_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB
);
196 DEFUN (debug_zebra_rib_detailed
,
197 debug_zebra_rib_detailed_cmd
,
198 "debug zebra rib detailed",
200 "Zebra configuration\n"
204 SET_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB_DETAILED
);
208 DEFUN (debug_zebra_fpm
,
212 "Zebra configuration\n"
213 "Debug zebra FPM events\n")
215 SET_FLAG (zebra_debug_fpm
, ZEBRA_DEBUG_FPM
);
219 DEFUN (no_debug_zebra_events
,
220 no_debug_zebra_events_cmd
,
221 "no debug zebra events",
224 "Zebra configuration\n"
225 "Debug option set for zebra events\n")
227 zebra_debug_event
= 0;
231 DEFUN (no_debug_zebra_nht
,
232 no_debug_zebra_nht_cmd
,
233 "no debug zebra nht",
236 "Zebra configuration\n"
237 "Debug option set for zebra next hop tracking\n")
243 DEFUN (no_debug_zebra_mpls
,
244 no_debug_zebra_mpls_cmd
,
245 "no debug zebra mpls",
248 "Zebra configuration\n"
249 "Debug option set for zebra MPLS LSPs\n")
251 zebra_debug_mpls
= 0;
255 DEFUN (no_debug_zebra_packet
,
256 no_debug_zebra_packet_cmd
,
257 "no debug zebra packet [<recv|send>]",
260 "Zebra configuration\n"
261 "Debug option set for zebra packet\n"
262 "Debug option set for receive packet\n"
263 "Debug option set for send packet\n")
266 if (argc
== 4 || argv_find (argv
, argc
, "send", &idx
))
267 UNSET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_SEND
);
268 if (argc
== 4 || argv_find (argv
, argc
, "recv", &idx
))
269 UNSET_FLAG(zebra_debug_packet
, ZEBRA_DEBUG_RECV
);
273 DEFUN (no_debug_zebra_kernel
,
274 no_debug_zebra_kernel_cmd
,
275 "no debug zebra kernel",
278 "Zebra configuration\n"
279 "Debug option set for zebra between kernel interface\n")
281 UNSET_FLAG(zebra_debug_kernel
, ZEBRA_DEBUG_KERNEL
);
285 DEFUN (no_debug_zebra_kernel_msgdump
,
286 no_debug_zebra_kernel_msgdump_cmd
,
287 "no debug zebra kernel msgdump [<recv|send>]",
290 "Zebra configuration\n"
291 "Debug option set for zebra between kernel interface\n"
292 "Dump raw netlink messages, sent and received\n"
293 "Dump raw netlink messages received\n"
294 "Dump raw netlink messages sent\n")
297 if (argc
== 5 || argv_find (argv
, argc
, "recv", &idx
))
298 UNSET_FLAG(zebra_debug_kernel
, ZEBRA_DEBUG_KERNEL_MSGDUMP_RECV
);
299 if (argc
== 5 || argv_find (argv
, argc
, "send", &idx
))
300 UNSET_FLAG(zebra_debug_kernel
, ZEBRA_DEBUG_KERNEL_MSGDUMP_SEND
);
305 DEFUN (no_debug_zebra_rib
,
306 no_debug_zebra_rib_cmd
,
307 "no debug zebra rib",
310 "Zebra configuration\n"
317 DEFUN (no_debug_zebra_rib_detailed
,
318 no_debug_zebra_rib_detailed_cmd
,
319 "no debug zebra rib detailed",
322 "Zebra configuration\n"
326 UNSET_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB_DETAILED
);
330 DEFUN (no_debug_zebra_fpm
,
331 no_debug_zebra_fpm_cmd
,
332 "no debug zebra fpm",
335 "Zebra configuration\n"
336 "Debug zebra FPM events\n")
343 struct cmd_node debug_node
=
346 "", /* Debug node has no interface. */
351 config_write_debug (struct vty
*vty
)
355 if (IS_ZEBRA_DEBUG_EVENT
)
357 vty_out (vty
, "debug zebra events%s", VTY_NEWLINE
);
360 if (IS_ZEBRA_DEBUG_PACKET
)
362 if (IS_ZEBRA_DEBUG_SEND
&& IS_ZEBRA_DEBUG_RECV
)
364 vty_out (vty
, "debug zebra packet%s%s",
365 IS_ZEBRA_DEBUG_DETAIL
? " detail" : "",
371 if (IS_ZEBRA_DEBUG_SEND
)
372 vty_out (vty
, "debug zebra packet send%s%s",
373 IS_ZEBRA_DEBUG_DETAIL
? " detail" : "",
376 vty_out (vty
, "debug zebra packet recv%s%s",
377 IS_ZEBRA_DEBUG_DETAIL
? " detail" : "",
382 if (IS_ZEBRA_DEBUG_KERNEL
)
384 vty_out (vty
, "debug zebra kernel%s", VTY_NEWLINE
);
387 /* Check here using flags as the 'macro' does an OR */
388 if (CHECK_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB
))
390 vty_out (vty
, "debug zebra rib%s", VTY_NEWLINE
);
393 if (CHECK_FLAG (zebra_debug_rib
, ZEBRA_DEBUG_RIB_DETAILED
))
395 vty_out (vty
, "debug zebra rib detailed%s", VTY_NEWLINE
);
398 if (IS_ZEBRA_DEBUG_FPM
)
400 vty_out (vty
, "debug zebra fpm%s", VTY_NEWLINE
);
403 if (IS_ZEBRA_DEBUG_NHT
)
405 vty_out (vty
, "debug zebra nht%s", VTY_NEWLINE
);
408 if (IS_ZEBRA_DEBUG_MPLS
)
410 vty_out (vty
, "debug zebra mpls%s", VTY_NEWLINE
);
417 zebra_debug_init (void)
419 zebra_debug_event
= 0;
420 zebra_debug_packet
= 0;
421 zebra_debug_kernel
= 0;
424 zebra_debug_mpls
= 0;
426 install_node (&debug_node
, config_write_debug
);
428 install_element (VIEW_NODE
, &show_debugging_zebra_cmd
);
430 install_element (ENABLE_NODE
, &debug_zebra_events_cmd
);
431 install_element (ENABLE_NODE
, &debug_zebra_nht_cmd
);
432 install_element (ENABLE_NODE
, &debug_zebra_mpls_cmd
);
433 install_element (ENABLE_NODE
, &debug_zebra_packet_cmd
);
434 install_element (ENABLE_NODE
, &debug_zebra_kernel_cmd
);
435 install_element (ENABLE_NODE
, &debug_zebra_kernel_msgdump_cmd
);
436 install_element (ENABLE_NODE
, &debug_zebra_rib_cmd
);
437 install_element (ENABLE_NODE
, &debug_zebra_rib_detailed_cmd
);
438 install_element (ENABLE_NODE
, &debug_zebra_fpm_cmd
);
439 install_element (ENABLE_NODE
, &no_debug_zebra_events_cmd
);
440 install_element (ENABLE_NODE
, &no_debug_zebra_nht_cmd
);
441 install_element (ENABLE_NODE
, &no_debug_zebra_mpls_cmd
);
442 install_element (ENABLE_NODE
, &no_debug_zebra_packet_cmd
);
443 install_element (ENABLE_NODE
, &no_debug_zebra_kernel_cmd
);
444 install_element (ENABLE_NODE
, &no_debug_zebra_kernel_msgdump_cmd
);
445 install_element (ENABLE_NODE
, &no_debug_zebra_rib_cmd
);
446 install_element (ENABLE_NODE
, &no_debug_zebra_rib_detailed_cmd
);
447 install_element (ENABLE_NODE
, &no_debug_zebra_fpm_cmd
);
449 install_element (CONFIG_NODE
, &debug_zebra_events_cmd
);
450 install_element (CONFIG_NODE
, &debug_zebra_nht_cmd
);
451 install_element (CONFIG_NODE
, &debug_zebra_mpls_cmd
);
452 install_element (CONFIG_NODE
, &debug_zebra_packet_cmd
);
453 install_element (CONFIG_NODE
, &debug_zebra_kernel_cmd
);
454 install_element (CONFIG_NODE
, &debug_zebra_kernel_msgdump_cmd
);
455 install_element (CONFIG_NODE
, &debug_zebra_rib_cmd
);
456 install_element (CONFIG_NODE
, &debug_zebra_rib_detailed_cmd
);
457 install_element (CONFIG_NODE
, &debug_zebra_fpm_cmd
);
458 install_element (CONFIG_NODE
, &no_debug_zebra_events_cmd
);
459 install_element (CONFIG_NODE
, &no_debug_zebra_nht_cmd
);
460 install_element (CONFIG_NODE
, &no_debug_zebra_mpls_cmd
);
461 install_element (CONFIG_NODE
, &no_debug_zebra_packet_cmd
);
462 install_element (CONFIG_NODE
, &no_debug_zebra_kernel_cmd
);
463 install_element (CONFIG_NODE
, &no_debug_zebra_kernel_msgdump_cmd
);
464 install_element (CONFIG_NODE
, &no_debug_zebra_rib_cmd
);
465 install_element (CONFIG_NODE
, &no_debug_zebra_rib_detailed_cmd
);
466 install_element (CONFIG_NODE
, &no_debug_zebra_fpm_cmd
);