]> git.proxmox.com Git - mirror_frr.git/blob - ldpd/ldp_debug.c
Merge pull request #698 from dslicenc/cm16737-srgb-block
[mirror_frr.git] / ldpd / ldp_debug.c
1 /*
2 * Copyright (C) 2016 by Open Source Routing.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; see the file COPYING; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
17 * MA 02110-1301 USA
18 */
19
20 #include <zebra.h>
21
22 #include "command.h"
23 #include "vty.h"
24
25 #include "ldpd.h"
26 #include "ldp_debug.h"
27 #include "ldp_vty.h"
28
29 struct ldp_debug conf_ldp_debug;
30 struct ldp_debug ldp_debug;
31
32 /* Debug node. */
33 struct cmd_node ldp_debug_node =
34 {
35 DEBUG_NODE,
36 "",
37 1
38 };
39
40 int
41 ldp_vty_debug(struct vty *vty, int disable, const char *type_str,
42 const char *dir_str, int all)
43 {
44 if (strcmp(type_str, "discovery") == 0) {
45 if (dir_str == NULL)
46 return (CMD_WARNING);
47
48 if (dir_str[0] == 'r') {
49 if (disable)
50 DEBUG_OFF(hello, HELLO_RECV);
51 else
52 DEBUG_ON(hello, HELLO_RECV);
53 } else {
54 if (disable)
55 DEBUG_OFF(hello, HELLO_SEND);
56 else
57 DEBUG_ON(hello, HELLO_SEND);
58 }
59 } else if (strcmp(type_str, "errors") == 0) {
60 if (disable)
61 DEBUG_OFF(errors, ERRORS);
62 else
63 DEBUG_ON(errors, ERRORS);
64 } else if (strcmp(type_str, "event") == 0) {
65 if (disable)
66 DEBUG_OFF(event, EVENT);
67 else
68 DEBUG_ON(event, EVENT);
69 } else if (strcmp(type_str, "messages") == 0) {
70 if (dir_str == NULL)
71 return (CMD_WARNING);
72
73 if (dir_str[0] == 'r') {
74 if (disable) {
75 DEBUG_OFF(msg, MSG_RECV);
76 DEBUG_OFF(msg, MSG_RECV_ALL);
77 } else {
78 DEBUG_ON(msg, MSG_RECV);
79 if (all)
80 DEBUG_ON(msg, MSG_RECV_ALL);
81 }
82 } else {
83 if (disable) {
84 DEBUG_OFF(msg, MSG_SEND);
85 DEBUG_OFF(msg, MSG_SEND_ALL);
86 } else {
87 DEBUG_ON(msg, MSG_SEND);
88 if (all)
89 DEBUG_ON(msg, MSG_SEND_ALL);
90 }
91 }
92 } else if (strcmp(type_str, "zebra") == 0) {
93 if (disable)
94 DEBUG_OFF(zebra, ZEBRA);
95 else
96 DEBUG_ON(zebra, ZEBRA);
97 }
98
99 main_imsg_compose_both(IMSG_DEBUG_UPDATE, &ldp_debug,
100 sizeof(ldp_debug));
101
102 return (CMD_SUCCESS);
103 }
104
105 int
106 ldp_vty_show_debugging(struct vty *vty)
107 {
108 vty_out(vty, "LDP debugging status:%s", VTY_NEWLINE);
109
110 if (LDP_DEBUG(hello, HELLO_RECV))
111 vty_out(vty, " LDP discovery debugging is on (inbound)%s",
112 VTY_NEWLINE);
113 if (LDP_DEBUG(hello, HELLO_SEND))
114 vty_out(vty, " LDP discovery debugging is on (outbound)%s",
115 VTY_NEWLINE);
116 if (LDP_DEBUG(errors, ERRORS))
117 vty_out(vty, " LDP errors debugging is on%s", VTY_NEWLINE);
118 if (LDP_DEBUG(event, EVENT))
119 vty_out(vty, " LDP events debugging is on%s", VTY_NEWLINE);
120 if (LDP_DEBUG(msg, MSG_RECV_ALL))
121 vty_out(vty, " LDP detailed messages debugging is on "
122 "(inbound)%s", VTY_NEWLINE);
123 else if (LDP_DEBUG(msg, MSG_RECV))
124 vty_out(vty, " LDP messages debugging is on (inbound)%s",
125 VTY_NEWLINE);
126 if (LDP_DEBUG(msg, MSG_SEND_ALL))
127 vty_out(vty, " LDP detailed messages debugging is on "
128 "(outbound)%s", VTY_NEWLINE);
129 else if (LDP_DEBUG(msg, MSG_SEND))
130 vty_out(vty, " LDP messages debugging is on (outbound)%s",
131 VTY_NEWLINE);
132 if (LDP_DEBUG(zebra, ZEBRA))
133 vty_out(vty, " LDP zebra debugging is on%s", VTY_NEWLINE);
134 vty_out (vty, "%s", VTY_NEWLINE);
135
136 return (CMD_SUCCESS);
137 }
138
139 int
140 ldp_debug_config_write(struct vty *vty)
141 {
142 int write = 0;
143
144 if (CONF_LDP_DEBUG(hello, HELLO_RECV)) {
145 vty_out(vty, "debug mpls ldp discovery hello recv%s",
146 VTY_NEWLINE);
147 write = 1;
148 }
149
150 if (CONF_LDP_DEBUG(hello, HELLO_SEND)) {
151 vty_out(vty, "debug mpls ldp discovery hello sent%s",
152 VTY_NEWLINE);
153 write = 1;
154 }
155
156 if (CONF_LDP_DEBUG(errors, ERRORS)) {
157 vty_out(vty, "debug mpls ldp errors%s", VTY_NEWLINE);
158 write = 1;
159 }
160
161 if (CONF_LDP_DEBUG(event, EVENT)) {
162 vty_out(vty, "debug mpls ldp event%s", VTY_NEWLINE);
163 write = 1;
164 }
165
166 if (CONF_LDP_DEBUG(msg, MSG_RECV_ALL)) {
167 vty_out(vty, "debug mpls ldp messages recv all%s", VTY_NEWLINE);
168 write = 1;
169 } else if (CONF_LDP_DEBUG(msg, MSG_RECV)) {
170 vty_out(vty, "debug mpls ldp messages recv%s", VTY_NEWLINE);
171 write = 1;
172 }
173
174 if (CONF_LDP_DEBUG(msg, MSG_SEND_ALL)) {
175 vty_out(vty, "debug mpls ldp messages sent all%s", VTY_NEWLINE);
176 write = 1;
177 } else if (CONF_LDP_DEBUG(msg, MSG_SEND)) {
178 vty_out(vty, "debug mpls ldp messages sent%s", VTY_NEWLINE);
179 write = 1;
180 }
181
182 if (CONF_LDP_DEBUG(zebra, ZEBRA)) {
183 vty_out(vty, "debug mpls ldp zebra%s", VTY_NEWLINE);
184 write = 1;
185 }
186
187 return (write);
188 }