2 * Copyright (C) 1999 Kunihiro Ishiguro <kunihiro@zebra.org>
4 * This file is part of GNU Zebra.
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
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.
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
23 #include "ripd/rip_debug.h"
25 /* For debug statement. */
26 unsigned long rip_debug_event
= 0;
27 unsigned long rip_debug_packet
= 0;
28 unsigned long rip_debug_zebra
= 0;
30 DEFUN_NOSH (show_debugging_rip
,
31 show_debugging_rip_cmd
,
32 "show debugging [rip]",
37 vty_out(vty
, "RIP debugging status:\n");
39 if (IS_RIP_DEBUG_EVENT
)
40 vty_out(vty
, " RIP event debugging is on\n");
42 if (IS_RIP_DEBUG_PACKET
) {
43 if (IS_RIP_DEBUG_SEND
&& IS_RIP_DEBUG_RECV
) {
44 vty_out(vty
, " RIP packet debugging is on\n");
46 if (IS_RIP_DEBUG_SEND
)
48 " RIP packet send debugging is on\n");
51 " RIP packet receive debugging is on\n");
55 if (IS_RIP_DEBUG_ZEBRA
)
56 vty_out(vty
, " RIP zebra debugging is on\n");
61 DEFUN (debug_rip_events
,
68 rip_debug_event
= RIP_DEBUG_EVENT
;
72 DEFUN (debug_rip_packet
,
79 rip_debug_packet
= RIP_DEBUG_PACKET
;
80 rip_debug_packet
|= RIP_DEBUG_SEND
;
81 rip_debug_packet
|= RIP_DEBUG_RECV
;
85 DEFUN (debug_rip_packet_direct
,
86 debug_rip_packet_direct_cmd
,
87 "debug rip packet <recv|send>",
91 "RIP receive packet\n"
94 int idx_recv_send
= 3;
95 rip_debug_packet
|= RIP_DEBUG_PACKET
;
96 if (strcmp("send", argv
[idx_recv_send
]->text
) == 0)
97 rip_debug_packet
|= RIP_DEBUG_SEND
;
98 if (strcmp("recv", argv
[idx_recv_send
]->text
) == 0)
99 rip_debug_packet
|= RIP_DEBUG_RECV
;
103 DEFUN (debug_rip_zebra
,
108 "RIP and ZEBRA communication\n")
110 rip_debug_zebra
= RIP_DEBUG_ZEBRA
;
114 DEFUN (no_debug_rip_events
,
115 no_debug_rip_events_cmd
,
116 "no debug rip events",
126 DEFUN (no_debug_rip_packet
,
127 no_debug_rip_packet_cmd
,
128 "no debug rip packet",
134 rip_debug_packet
= 0;
138 DEFUN (no_debug_rip_packet_direct
,
139 no_debug_rip_packet_direct_cmd
,
140 "no debug rip packet <recv|send>",
145 "RIP option set for receive packet\n"
146 "RIP option set for send packet\n")
148 int idx_recv_send
= 4;
149 if (strcmp("send", argv
[idx_recv_send
]->text
) == 0) {
150 if (IS_RIP_DEBUG_RECV
)
151 rip_debug_packet
&= ~RIP_DEBUG_SEND
;
153 rip_debug_packet
= 0;
154 } else if (strcmp("recv", argv
[idx_recv_send
]->text
) == 0) {
155 if (IS_RIP_DEBUG_SEND
)
156 rip_debug_packet
&= ~RIP_DEBUG_RECV
;
158 rip_debug_packet
= 0;
163 DEFUN (no_debug_rip_zebra
,
164 no_debug_rip_zebra_cmd
,
165 "no debug rip zebra",
169 "RIP and ZEBRA communication\n")
176 static struct cmd_node debug_node
= {DEBUG_NODE
,
177 "", /* Debug node has no interface. */
180 static int config_write_debug(struct vty
*vty
)
184 if (IS_RIP_DEBUG_EVENT
) {
185 vty_out(vty
, "debug rip events\n");
188 if (IS_RIP_DEBUG_PACKET
) {
189 if (IS_RIP_DEBUG_SEND
&& IS_RIP_DEBUG_RECV
) {
190 vty_out(vty
, "debug rip packet\n");
193 if (IS_RIP_DEBUG_SEND
)
194 vty_out(vty
, "debug rip packet send\n");
196 vty_out(vty
, "debug rip packet recv\n");
200 if (IS_RIP_DEBUG_ZEBRA
) {
201 vty_out(vty
, "debug rip zebra\n");
207 void rip_debug_init(void)
210 rip_debug_packet
= 0;
213 install_node(&debug_node
, config_write_debug
);
215 install_element(ENABLE_NODE
, &show_debugging_rip_cmd
);
216 install_element(ENABLE_NODE
, &debug_rip_events_cmd
);
217 install_element(ENABLE_NODE
, &debug_rip_packet_cmd
);
218 install_element(ENABLE_NODE
, &debug_rip_packet_direct_cmd
);
219 install_element(ENABLE_NODE
, &debug_rip_zebra_cmd
);
220 install_element(ENABLE_NODE
, &no_debug_rip_events_cmd
);
221 install_element(ENABLE_NODE
, &no_debug_rip_packet_cmd
);
222 install_element(ENABLE_NODE
, &no_debug_rip_packet_direct_cmd
);
223 install_element(ENABLE_NODE
, &no_debug_rip_zebra_cmd
);
225 install_element(CONFIG_NODE
, &debug_rip_events_cmd
);
226 install_element(CONFIG_NODE
, &debug_rip_packet_cmd
);
227 install_element(CONFIG_NODE
, &debug_rip_packet_direct_cmd
);
228 install_element(CONFIG_NODE
, &debug_rip_zebra_cmd
);
229 install_element(CONFIG_NODE
, &no_debug_rip_events_cmd
);
230 install_element(CONFIG_NODE
, &no_debug_rip_packet_cmd
);
231 install_element(CONFIG_NODE
, &no_debug_rip_packet_direct_cmd
);
232 install_element(CONFIG_NODE
, &no_debug_rip_zebra_cmd
);