Annotation of embedaddon/quagga/ripd/rip_debug.c, revision 1.1.1.1
1.1 misho 1: /* RIP debug routines
2: * Copyright (C) 1999 Kunihiro Ishiguro <kunihiro@zebra.org>
3: *
4: * This file is part of GNU Zebra.
5: *
6: * GNU Zebra 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
8: * Free Software Foundation; either version 2, or (at your option) any
9: * later version.
10: *
11: * GNU Zebra is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * General Public License for more details.
15: *
16: * You should have received a copy of the GNU General Public License
17: * along with GNU Zebra; see the file COPYING. If not, write to the Free
18: * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19: * 02111-1307, USA.
20: */
21:
22: #include <zebra.h>
23: #include "command.h"
24: #include "ripd/rip_debug.h"
25:
26: /* For debug statement. */
27: unsigned long rip_debug_event = 0;
28: unsigned long rip_debug_packet = 0;
29: unsigned long rip_debug_zebra = 0;
30:
31: DEFUN (show_debugging_rip,
32: show_debugging_rip_cmd,
33: "show debugging rip",
34: SHOW_STR
35: DEBUG_STR
36: RIP_STR)
37: {
38: vty_out (vty, "RIP debugging status:%s", VTY_NEWLINE);
39:
40: if (IS_RIP_DEBUG_EVENT)
41: vty_out (vty, " RIP event debugging is on%s", VTY_NEWLINE);
42:
43: if (IS_RIP_DEBUG_PACKET)
44: {
45: if (IS_RIP_DEBUG_SEND && IS_RIP_DEBUG_RECV)
46: {
47: vty_out (vty, " RIP packet debugging is on%s",
48: VTY_NEWLINE);
49: }
50: else
51: {
52: if (IS_RIP_DEBUG_SEND)
53: vty_out (vty, " RIP packet send debugging is on%s",
54: VTY_NEWLINE);
55: else
56: vty_out (vty, " RIP packet receive debugging is on%s",
57: VTY_NEWLINE);
58: }
59: }
60:
61: if (IS_RIP_DEBUG_ZEBRA)
62: vty_out (vty, " RIP zebra debugging is on%s", VTY_NEWLINE);
63:
64: return CMD_SUCCESS;
65: }
66:
67: DEFUN (debug_rip_events,
68: debug_rip_events_cmd,
69: "debug rip events",
70: DEBUG_STR
71: RIP_STR
72: "RIP events\n")
73: {
74: rip_debug_event = RIP_DEBUG_EVENT;
75: return CMD_WARNING;
76: }
77:
78: DEFUN (debug_rip_packet,
79: debug_rip_packet_cmd,
80: "debug rip packet",
81: DEBUG_STR
82: RIP_STR
83: "RIP packet\n")
84: {
85: rip_debug_packet = RIP_DEBUG_PACKET;
86: rip_debug_packet |= RIP_DEBUG_SEND;
87: rip_debug_packet |= RIP_DEBUG_RECV;
88: return CMD_SUCCESS;
89: }
90:
91: DEFUN (debug_rip_packet_direct,
92: debug_rip_packet_direct_cmd,
93: "debug rip packet (recv|send)",
94: DEBUG_STR
95: RIP_STR
96: "RIP packet\n"
97: "RIP receive packet\n"
98: "RIP send packet\n")
99: {
100: rip_debug_packet |= RIP_DEBUG_PACKET;
101: if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
102: rip_debug_packet |= RIP_DEBUG_SEND;
103: if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
104: rip_debug_packet |= RIP_DEBUG_RECV;
105: return CMD_SUCCESS;
106: }
107:
108: /* N.B. the "detail" modifier is a no-op. we leave this command
109: for legacy compatibility. */
110: DEFUN_DEPRECATED (debug_rip_packet_detail,
111: debug_rip_packet_detail_cmd,
112: "debug rip packet (recv|send) detail",
113: DEBUG_STR
114: RIP_STR
115: "RIP packet\n"
116: "RIP receive packet\n"
117: "RIP send packet\n"
118: "Detailed information display\n")
119: {
120: rip_debug_packet |= RIP_DEBUG_PACKET;
121: if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
122: rip_debug_packet |= RIP_DEBUG_SEND;
123: if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
124: rip_debug_packet |= RIP_DEBUG_RECV;
125: return CMD_SUCCESS;
126: }
127:
128: DEFUN (debug_rip_zebra,
129: debug_rip_zebra_cmd,
130: "debug rip zebra",
131: DEBUG_STR
132: RIP_STR
133: "RIP and ZEBRA communication\n")
134: {
135: rip_debug_zebra = RIP_DEBUG_ZEBRA;
136: return CMD_WARNING;
137: }
138:
139: DEFUN (no_debug_rip_events,
140: no_debug_rip_events_cmd,
141: "no debug rip events",
142: NO_STR
143: DEBUG_STR
144: RIP_STR
145: "RIP events\n")
146: {
147: rip_debug_event = 0;
148: return CMD_SUCCESS;
149: }
150:
151: DEFUN (no_debug_rip_packet,
152: no_debug_rip_packet_cmd,
153: "no debug rip packet",
154: NO_STR
155: DEBUG_STR
156: RIP_STR
157: "RIP packet\n")
158: {
159: rip_debug_packet = 0;
160: return CMD_SUCCESS;
161: }
162:
163: DEFUN (no_debug_rip_packet_direct,
164: no_debug_rip_packet_direct_cmd,
165: "no debug rip packet (recv|send)",
166: NO_STR
167: DEBUG_STR
168: RIP_STR
169: "RIP packet\n"
170: "RIP option set for receive packet\n"
171: "RIP option set for send packet\n")
172: {
173: if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
174: {
175: if (IS_RIP_DEBUG_RECV)
176: rip_debug_packet &= ~RIP_DEBUG_SEND;
177: else
178: rip_debug_packet = 0;
179: }
180: else if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
181: {
182: if (IS_RIP_DEBUG_SEND)
183: rip_debug_packet &= ~RIP_DEBUG_RECV;
184: else
185: rip_debug_packet = 0;
186: }
187: return CMD_SUCCESS;
188: }
189:
190: DEFUN (no_debug_rip_zebra,
191: no_debug_rip_zebra_cmd,
192: "no debug rip zebra",
193: NO_STR
194: DEBUG_STR
195: RIP_STR
196: "RIP and ZEBRA communication\n")
197: {
198: rip_debug_zebra = 0;
199: return CMD_WARNING;
200: }
201:
202: /* Debug node. */
203: static struct cmd_node debug_node =
204: {
205: DEBUG_NODE,
206: "", /* Debug node has no interface. */
207: 1
208: };
209:
210: static int
211: config_write_debug (struct vty *vty)
212: {
213: int write = 0;
214:
215: if (IS_RIP_DEBUG_EVENT)
216: {
217: vty_out (vty, "debug rip events%s", VTY_NEWLINE);
218: write++;
219: }
220: if (IS_RIP_DEBUG_PACKET)
221: {
222: if (IS_RIP_DEBUG_SEND && IS_RIP_DEBUG_RECV)
223: {
224: vty_out (vty, "debug rip packet%s",
225: VTY_NEWLINE);
226: write++;
227: }
228: else
229: {
230: if (IS_RIP_DEBUG_SEND)
231: vty_out (vty, "debug rip packet send%s",
232: VTY_NEWLINE);
233: else
234: vty_out (vty, "debug rip packet recv%s",
235: VTY_NEWLINE);
236: write++;
237: }
238: }
239: if (IS_RIP_DEBUG_ZEBRA)
240: {
241: vty_out (vty, "debug rip zebra%s", VTY_NEWLINE);
242: write++;
243: }
244: return write;
245: }
246:
247: void
248: rip_debug_reset (void)
249: {
250: rip_debug_event = 0;
251: rip_debug_packet = 0;
252: rip_debug_zebra = 0;
253: }
254:
255: void
256: rip_debug_init (void)
257: {
258: rip_debug_event = 0;
259: rip_debug_packet = 0;
260: rip_debug_zebra = 0;
261:
262: install_node (&debug_node, config_write_debug);
263:
264: install_element (ENABLE_NODE, &show_debugging_rip_cmd);
265: install_element (ENABLE_NODE, &debug_rip_events_cmd);
266: install_element (ENABLE_NODE, &debug_rip_packet_cmd);
267: install_element (ENABLE_NODE, &debug_rip_packet_direct_cmd);
268: install_element (ENABLE_NODE, &debug_rip_packet_detail_cmd);
269: install_element (ENABLE_NODE, &debug_rip_zebra_cmd);
270: install_element (ENABLE_NODE, &no_debug_rip_events_cmd);
271: install_element (ENABLE_NODE, &no_debug_rip_packet_cmd);
272: install_element (ENABLE_NODE, &no_debug_rip_packet_direct_cmd);
273: install_element (ENABLE_NODE, &no_debug_rip_zebra_cmd);
274:
275: install_element (CONFIG_NODE, &debug_rip_events_cmd);
276: install_element (CONFIG_NODE, &debug_rip_packet_cmd);
277: install_element (CONFIG_NODE, &debug_rip_packet_direct_cmd);
278: install_element (CONFIG_NODE, &debug_rip_packet_detail_cmd);
279: install_element (CONFIG_NODE, &debug_rip_zebra_cmd);
280: install_element (CONFIG_NODE, &no_debug_rip_events_cmd);
281: install_element (CONFIG_NODE, &no_debug_rip_packet_cmd);
282: install_element (CONFIG_NODE, &no_debug_rip_packet_direct_cmd);
283: install_element (CONFIG_NODE, &no_debug_rip_zebra_cmd);
284: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>