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 (show_debugging_rip
,
31 show_debugging_rip_cmd
,
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 (strncmp("send", argv
[idx_recv_send
]->arg
,
97 strlen(argv
[idx_recv_send
]->arg
))
99 rip_debug_packet
|= RIP_DEBUG_SEND
;
100 if (strncmp("recv", argv
[idx_recv_send
]->arg
,
101 strlen(argv
[idx_recv_send
]->arg
))
103 rip_debug_packet
|= RIP_DEBUG_RECV
;
107 DEFUN (debug_rip_zebra
,
112 "RIP and ZEBRA communication\n")
114 rip_debug_zebra
= RIP_DEBUG_ZEBRA
;
118 DEFUN (no_debug_rip_events
,
119 no_debug_rip_events_cmd
,
120 "no debug rip events",
130 DEFUN (no_debug_rip_packet
,
131 no_debug_rip_packet_cmd
,
132 "no debug rip packet",
138 rip_debug_packet
= 0;
142 DEFUN (no_debug_rip_packet_direct
,
143 no_debug_rip_packet_direct_cmd
,
144 "no debug rip packet <recv|send>",
149 "RIP option set for receive packet\n"
150 "RIP option set for send packet\n")
152 int idx_recv_send
= 4;
153 if (strncmp("send", argv
[idx_recv_send
]->arg
,
154 strlen(argv
[idx_recv_send
]->arg
))
156 if (IS_RIP_DEBUG_RECV
)
157 rip_debug_packet
&= ~RIP_DEBUG_SEND
;
159 rip_debug_packet
= 0;
160 } else if (strncmp("recv", argv
[idx_recv_send
]->arg
,
161 strlen(argv
[idx_recv_send
]->arg
))
163 if (IS_RIP_DEBUG_SEND
)
164 rip_debug_packet
&= ~RIP_DEBUG_RECV
;
166 rip_debug_packet
= 0;
171 DEFUN (no_debug_rip_zebra
,
172 no_debug_rip_zebra_cmd
,
173 "no debug rip zebra",
177 "RIP and ZEBRA communication\n")
184 static struct cmd_node debug_node
= {DEBUG_NODE
,
185 "", /* Debug node has no interface. */
188 static int config_write_debug(struct vty
*vty
)
192 if (IS_RIP_DEBUG_EVENT
) {
193 vty_out(vty
, "debug rip events\n");
196 if (IS_RIP_DEBUG_PACKET
) {
197 if (IS_RIP_DEBUG_SEND
&& IS_RIP_DEBUG_RECV
) {
198 vty_out(vty
, "debug rip packet\n");
201 if (IS_RIP_DEBUG_SEND
)
202 vty_out(vty
, "debug rip packet send\n");
204 vty_out(vty
, "debug rip packet recv\n");
208 if (IS_RIP_DEBUG_ZEBRA
) {
209 vty_out(vty
, "debug rip zebra\n");
215 void rip_debug_reset(void)
218 rip_debug_packet
= 0;
222 void rip_debug_init(void)
225 rip_debug_packet
= 0;
228 install_node(&debug_node
, config_write_debug
);
230 install_element(ENABLE_NODE
, &show_debugging_rip_cmd
);
231 install_element(ENABLE_NODE
, &debug_rip_events_cmd
);
232 install_element(ENABLE_NODE
, &debug_rip_packet_cmd
);
233 install_element(ENABLE_NODE
, &debug_rip_packet_direct_cmd
);
234 install_element(ENABLE_NODE
, &debug_rip_zebra_cmd
);
235 install_element(ENABLE_NODE
, &no_debug_rip_events_cmd
);
236 install_element(ENABLE_NODE
, &no_debug_rip_packet_cmd
);
237 install_element(ENABLE_NODE
, &no_debug_rip_packet_direct_cmd
);
238 install_element(ENABLE_NODE
, &no_debug_rip_zebra_cmd
);
240 install_element(CONFIG_NODE
, &debug_rip_events_cmd
);
241 install_element(CONFIG_NODE
, &debug_rip_packet_cmd
);
242 install_element(CONFIG_NODE
, &debug_rip_packet_direct_cmd
);
243 install_element(CONFIG_NODE
, &debug_rip_zebra_cmd
);
244 install_element(CONFIG_NODE
, &no_debug_rip_events_cmd
);
245 install_element(CONFIG_NODE
, &no_debug_rip_packet_cmd
);
246 install_element(CONFIG_NODE
, &no_debug_rip_packet_direct_cmd
);
247 install_element(CONFIG_NODE
, &no_debug_rip_zebra_cmd
);