Annotation of embedaddon/quagga/zebra/debug.c, revision 1.1.1.2
1.1 misho 1: /*
2: * Zebra debug related function
3: * Copyright (C) 1999 Kunihiro Ishiguro
4: *
5: * This file is part of GNU Zebra.
6: *
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
10: * later version.
11: *
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.
16: *
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.
21: */
22:
23: #include <zebra.h>
24: #include "command.h"
25: #include "debug.h"
26:
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;
1.1.1.2 ! misho 32: unsigned long zebra_debug_fpm;
1.1 misho 33:
34: DEFUN (show_debugging_zebra,
35: show_debugging_zebra_cmd,
36: "show debugging zebra",
37: SHOW_STR
38: "Zebra configuration\n"
39: "Debugging information\n")
40: {
41: vty_out (vty, "Zebra debugging status:%s", VTY_NEWLINE);
42:
43: if (IS_ZEBRA_DEBUG_EVENT)
44: vty_out (vty, " Zebra event debugging is on%s", VTY_NEWLINE);
45:
46: if (IS_ZEBRA_DEBUG_PACKET)
47: {
48: if (IS_ZEBRA_DEBUG_SEND && IS_ZEBRA_DEBUG_RECV)
49: {
50: vty_out (vty, " Zebra packet%s debugging is on%s",
51: IS_ZEBRA_DEBUG_DETAIL ? " detail" : "",
52: VTY_NEWLINE);
53: }
54: else
55: {
56: if (IS_ZEBRA_DEBUG_SEND)
57: vty_out (vty, " Zebra packet send%s debugging is on%s",
58: IS_ZEBRA_DEBUG_DETAIL ? " detail" : "",
59: VTY_NEWLINE);
60: else
61: vty_out (vty, " Zebra packet receive%s debugging is on%s",
62: IS_ZEBRA_DEBUG_DETAIL ? " detail" : "",
63: VTY_NEWLINE);
64: }
65: }
66:
67: if (IS_ZEBRA_DEBUG_KERNEL)
68: vty_out (vty, " Zebra kernel debugging is on%s", VTY_NEWLINE);
69:
70: if (IS_ZEBRA_DEBUG_RIB)
71: vty_out (vty, " Zebra RIB debugging is on%s", VTY_NEWLINE);
72: if (IS_ZEBRA_DEBUG_RIB_Q)
73: vty_out (vty, " Zebra RIB queue debugging is on%s", VTY_NEWLINE);
74:
1.1.1.2 ! misho 75: if (IS_ZEBRA_DEBUG_FPM)
! 76: vty_out (vty, " Zebra FPM debugging is on%s", VTY_NEWLINE);
! 77:
1.1 misho 78: return CMD_SUCCESS;
79: }
80:
81: DEFUN (debug_zebra_events,
82: debug_zebra_events_cmd,
83: "debug zebra events",
84: DEBUG_STR
85: "Zebra configuration\n"
86: "Debug option set for zebra events\n")
87: {
88: zebra_debug_event = ZEBRA_DEBUG_EVENT;
89: return CMD_WARNING;
90: }
91:
92: DEFUN (debug_zebra_packet,
93: debug_zebra_packet_cmd,
94: "debug zebra packet",
95: DEBUG_STR
96: "Zebra configuration\n"
97: "Debug option set for zebra packet\n")
98: {
99: zebra_debug_packet = ZEBRA_DEBUG_PACKET;
100: zebra_debug_packet |= ZEBRA_DEBUG_SEND;
101: zebra_debug_packet |= ZEBRA_DEBUG_RECV;
102: return CMD_SUCCESS;
103: }
104:
105: DEFUN (debug_zebra_packet_direct,
106: debug_zebra_packet_direct_cmd,
107: "debug zebra packet (recv|send)",
108: DEBUG_STR
109: "Zebra configuration\n"
110: "Debug option set for zebra packet\n"
111: "Debug option set for receive packet\n"
112: "Debug option set for send packet\n")
113: {
114: zebra_debug_packet = ZEBRA_DEBUG_PACKET;
115: if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
116: zebra_debug_packet |= ZEBRA_DEBUG_SEND;
117: if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
118: zebra_debug_packet |= ZEBRA_DEBUG_RECV;
119: zebra_debug_packet &= ~ZEBRA_DEBUG_DETAIL;
120: return CMD_SUCCESS;
121: }
122:
123: DEFUN (debug_zebra_packet_detail,
124: debug_zebra_packet_detail_cmd,
125: "debug zebra packet (recv|send) detail",
126: DEBUG_STR
127: "Zebra configuration\n"
128: "Debug option set for zebra packet\n"
129: "Debug option set for receive packet\n"
130: "Debug option set for send packet\n"
131: "Debug option set detaied information\n")
132: {
133: zebra_debug_packet = ZEBRA_DEBUG_PACKET;
134: if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
135: zebra_debug_packet |= ZEBRA_DEBUG_SEND;
136: if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
137: zebra_debug_packet |= ZEBRA_DEBUG_RECV;
138: zebra_debug_packet |= ZEBRA_DEBUG_DETAIL;
139: return CMD_SUCCESS;
140: }
141:
142: DEFUN (debug_zebra_kernel,
143: debug_zebra_kernel_cmd,
144: "debug zebra kernel",
145: DEBUG_STR
146: "Zebra configuration\n"
147: "Debug option set for zebra between kernel interface\n")
148: {
149: zebra_debug_kernel = ZEBRA_DEBUG_KERNEL;
150: return CMD_SUCCESS;
151: }
152:
153: DEFUN (debug_zebra_rib,
154: debug_zebra_rib_cmd,
155: "debug zebra rib",
156: DEBUG_STR
157: "Zebra configuration\n"
158: "Debug RIB events\n")
159: {
160: SET_FLAG (zebra_debug_rib, ZEBRA_DEBUG_RIB);
161: return CMD_SUCCESS;
162: }
163:
164: DEFUN (debug_zebra_rib_q,
165: debug_zebra_rib_q_cmd,
166: "debug zebra rib queue",
167: DEBUG_STR
168: "Zebra configuration\n"
169: "Debug RIB events\n"
170: "Debug RIB queueing\n")
171: {
172: SET_FLAG (zebra_debug_rib, ZEBRA_DEBUG_RIB_Q);
173: return CMD_SUCCESS;
174: }
175:
1.1.1.2 ! misho 176: DEFUN (debug_zebra_fpm,
! 177: debug_zebra_fpm_cmd,
! 178: "debug zebra fpm",
! 179: DEBUG_STR
! 180: "Zebra configuration\n"
! 181: "Debug zebra FPM events\n")
! 182: {
! 183: SET_FLAG (zebra_debug_fpm, ZEBRA_DEBUG_FPM);
! 184: return CMD_SUCCESS;
! 185: }
! 186:
1.1 misho 187: DEFUN (no_debug_zebra_events,
188: no_debug_zebra_events_cmd,
189: "no debug zebra events",
190: NO_STR
191: DEBUG_STR
192: "Zebra configuration\n"
193: "Debug option set for zebra events\n")
194: {
195: zebra_debug_event = 0;
196: return CMD_SUCCESS;
197: }
198:
199: DEFUN (no_debug_zebra_packet,
200: no_debug_zebra_packet_cmd,
201: "no debug zebra packet",
202: NO_STR
203: DEBUG_STR
204: "Zebra configuration\n"
205: "Debug option set for zebra packet\n")
206: {
207: zebra_debug_packet = 0;
208: return CMD_SUCCESS;
209: }
210:
211: DEFUN (no_debug_zebra_packet_direct,
212: no_debug_zebra_packet_direct_cmd,
213: "no debug zebra packet (recv|send)",
214: NO_STR
215: DEBUG_STR
216: "Zebra configuration\n"
217: "Debug option set for zebra packet\n"
218: "Debug option set for receive packet\n"
219: "Debug option set for send packet\n")
220: {
221: if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
222: zebra_debug_packet &= ~ZEBRA_DEBUG_SEND;
223: if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
224: zebra_debug_packet &= ~ZEBRA_DEBUG_RECV;
225: return CMD_SUCCESS;
226: }
227:
228: DEFUN (no_debug_zebra_kernel,
229: no_debug_zebra_kernel_cmd,
230: "no debug zebra kernel",
231: NO_STR
232: DEBUG_STR
233: "Zebra configuration\n"
234: "Debug option set for zebra between kernel interface\n")
235: {
236: zebra_debug_kernel = 0;
237: return CMD_SUCCESS;
238: }
239:
240: DEFUN (no_debug_zebra_rib,
241: no_debug_zebra_rib_cmd,
242: "no debug zebra rib",
243: NO_STR
244: DEBUG_STR
245: "Zebra configuration\n"
246: "Debug zebra RIB\n")
247: {
248: zebra_debug_rib = 0;
249: return CMD_SUCCESS;
250: }
251:
252: DEFUN (no_debug_zebra_rib_q,
253: no_debug_zebra_rib_q_cmd,
254: "no debug zebra rib queue",
255: NO_STR
256: DEBUG_STR
257: "Zebra configuration\n"
258: "Debug zebra RIB\n"
259: "Debug RIB queueing\n")
260: {
261: UNSET_FLAG (zebra_debug_rib, ZEBRA_DEBUG_RIB_Q);
262: return CMD_SUCCESS;
263: }
264:
1.1.1.2 ! misho 265: DEFUN (no_debug_zebra_fpm,
! 266: no_debug_zebra_fpm_cmd,
! 267: "no debug zebra fpm",
! 268: NO_STR
! 269: DEBUG_STR
! 270: "Zebra configuration\n"
! 271: "Debug zebra FPM events\n")
! 272: {
! 273: zebra_debug_fpm = 0;
! 274: return CMD_SUCCESS;
! 275: }
! 276:
1.1 misho 277: /* Debug node. */
278: struct cmd_node debug_node =
279: {
280: DEBUG_NODE,
281: "", /* Debug node has no interface. */
282: 1
283: };
284:
285: static int
286: config_write_debug (struct vty *vty)
287: {
288: int write = 0;
289:
290: if (IS_ZEBRA_DEBUG_EVENT)
291: {
292: vty_out (vty, "debug zebra events%s", VTY_NEWLINE);
293: write++;
294: }
295: if (IS_ZEBRA_DEBUG_PACKET)
296: {
297: if (IS_ZEBRA_DEBUG_SEND && IS_ZEBRA_DEBUG_RECV)
298: {
299: vty_out (vty, "debug zebra packet%s%s",
300: IS_ZEBRA_DEBUG_DETAIL ? " detail" : "",
301: VTY_NEWLINE);
302: write++;
303: }
304: else
305: {
306: if (IS_ZEBRA_DEBUG_SEND)
307: vty_out (vty, "debug zebra packet send%s%s",
308: IS_ZEBRA_DEBUG_DETAIL ? " detail" : "",
309: VTY_NEWLINE);
310: else
311: vty_out (vty, "debug zebra packet recv%s%s",
312: IS_ZEBRA_DEBUG_DETAIL ? " detail" : "",
313: VTY_NEWLINE);
314: write++;
315: }
316: }
317: if (IS_ZEBRA_DEBUG_KERNEL)
318: {
319: vty_out (vty, "debug zebra kernel%s", VTY_NEWLINE);
320: write++;
321: }
322: if (IS_ZEBRA_DEBUG_RIB)
323: {
324: vty_out (vty, "debug zebra rib%s", VTY_NEWLINE);
325: write++;
326: }
327: if (IS_ZEBRA_DEBUG_RIB_Q)
328: {
329: vty_out (vty, "debug zebra rib queue%s", VTY_NEWLINE);
330: write++;
331: }
1.1.1.2 ! misho 332: if (IS_ZEBRA_DEBUG_FPM)
! 333: {
! 334: vty_out (vty, "debug zebra fpm%s", VTY_NEWLINE);
! 335: write++;
! 336: }
1.1 misho 337: return write;
338: }
339:
340: void
341: zebra_debug_init (void)
342: {
343: zebra_debug_event = 0;
344: zebra_debug_packet = 0;
345: zebra_debug_kernel = 0;
346: zebra_debug_rib = 0;
1.1.1.2 ! misho 347: zebra_debug_fpm = 0;
1.1 misho 348:
349: install_node (&debug_node, config_write_debug);
350:
351: install_element (VIEW_NODE, &show_debugging_zebra_cmd);
352:
353: install_element (ENABLE_NODE, &show_debugging_zebra_cmd);
354: install_element (ENABLE_NODE, &debug_zebra_events_cmd);
355: install_element (ENABLE_NODE, &debug_zebra_packet_cmd);
356: install_element (ENABLE_NODE, &debug_zebra_packet_direct_cmd);
357: install_element (ENABLE_NODE, &debug_zebra_packet_detail_cmd);
358: install_element (ENABLE_NODE, &debug_zebra_kernel_cmd);
359: install_element (ENABLE_NODE, &debug_zebra_rib_cmd);
360: install_element (ENABLE_NODE, &debug_zebra_rib_q_cmd);
1.1.1.2 ! misho 361: install_element (ENABLE_NODE, &debug_zebra_fpm_cmd);
1.1 misho 362: install_element (ENABLE_NODE, &no_debug_zebra_events_cmd);
363: install_element (ENABLE_NODE, &no_debug_zebra_packet_cmd);
364: install_element (ENABLE_NODE, &no_debug_zebra_kernel_cmd);
365: install_element (ENABLE_NODE, &no_debug_zebra_rib_cmd);
366: install_element (ENABLE_NODE, &no_debug_zebra_rib_q_cmd);
1.1.1.2 ! misho 367: install_element (ENABLE_NODE, &no_debug_zebra_fpm_cmd);
1.1 misho 368:
369: install_element (CONFIG_NODE, &debug_zebra_events_cmd);
370: install_element (CONFIG_NODE, &debug_zebra_packet_cmd);
371: install_element (CONFIG_NODE, &debug_zebra_packet_direct_cmd);
372: install_element (CONFIG_NODE, &debug_zebra_packet_detail_cmd);
373: install_element (CONFIG_NODE, &debug_zebra_kernel_cmd);
374: install_element (CONFIG_NODE, &debug_zebra_rib_cmd);
375: install_element (CONFIG_NODE, &debug_zebra_rib_q_cmd);
1.1.1.2 ! misho 376: install_element (CONFIG_NODE, &debug_zebra_fpm_cmd);
1.1 misho 377: install_element (CONFIG_NODE, &no_debug_zebra_events_cmd);
378: install_element (CONFIG_NODE, &no_debug_zebra_packet_cmd);
379: install_element (CONFIG_NODE, &no_debug_zebra_kernel_cmd);
380: install_element (CONFIG_NODE, &no_debug_zebra_rib_cmd);
381: install_element (CONFIG_NODE, &no_debug_zebra_rib_q_cmd);
1.1.1.2 ! misho 382: install_element (CONFIG_NODE, &no_debug_zebra_fpm_cmd);
1.1 misho 383: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>