]>
Commit | Line | Data |
---|---|---|
43e52561 QY |
1 | /* |
2 | * Zebra-specific error messages. | |
3 | * Copyright (C) 2018 Cumulus Networks, Inc. | |
4 | * Quentin Young | |
5 | * | |
6 | * This program 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 Free | |
8 | * Software Foundation; either version 2 of the License, or (at your option) | |
9 | * any later version. | |
10 | * | |
11 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
14 | * more details. | |
15 | * | |
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 | |
19 | */ | |
20 | ||
21 | #include <zebra.h> | |
247dcce2 QY |
22 | |
23 | #include "lib/ferr.h" | |
43e52561 | 24 | #include "zebra_errors.h" |
43e52561 QY |
25 | |
26 | /* clang-format off */ | |
85cd2f9f | 27 | static struct log_ref ferr_zebra_err[] = { |
43e52561 QY |
28 | { |
29 | .code = ZEBRA_ERR_LM_RESPONSE, | |
30 | .title = "Error reading response from label manager", | |
31 | .description = "Zebra could not read the ZAPI header from the label manager", | |
32 | .suggestion = "Wait for the error to resolve on its own. If it does not resolve, restart Zebra.", | |
33 | }, | |
34 | { | |
35 | .code = ZEBRA_ERR_LM_NO_SUCH_CLIENT, | |
36 | .title = "Label manager could not find ZAPI client", | |
37 | .description = "Zebra was unable to find a ZAPI client matching the given protocol and instance number.", | |
38 | .suggestion = "Ensure clients which use the label manager are properly configured and running.", | |
39 | }, | |
40 | { | |
41 | .code = ZEBRA_ERR_LM_RELAY_FAILED, | |
42 | .title = "Zebra could not relay label manager response", | |
43 | .description = "Zebra found the client and instance to relay the label manager response or request to, but was not able to do so, possibly because the connection was closed.", | |
44 | .suggestion = "Ensure clients which use the label manager are properly configured and running.", | |
45 | }, | |
46 | { | |
47 | .code = ZEBRA_ERR_LM_BAD_INSTANCE, | |
48 | .title = "Mismatch between ZAPI instance and encoded message instance", | |
49 | .description = "While relaying a request to the external label manager, Zebra noticed that the instance number encoded in the message did not match the client instance number.", | |
50 | .suggestion = "Notify a developer.", | |
51 | }, | |
52 | { | |
53 | .code = ZEBRA_ERR_LM_EXHAUSTED_LABELS, | |
54 | .title = "Zebra label manager used all available labels", | |
55 | .description = "Zebra is unable to assign additional label chunks because it has exhausted its assigned label range.", | |
56 | .suggestion = "Make the label range bigger and restart Zebra.", | |
57 | }, | |
58 | { | |
59 | .code = ZEBRA_ERR_LM_DAEMON_MISMATCH, | |
60 | .title = "Daemon mismatch when releasing label chunks", | |
61 | .description = "Zebra noticed a mismatch between a label chunk and a protocol daemon number or instance when releasing unused label chunks.", | |
62 | .suggestion = "Ignore this error.", | |
63 | }, | |
64 | { | |
65 | .code = ZEBRA_ERR_LM_UNRELEASED_CHUNK, | |
66 | .title = "Zebra did not free any label chunks", | |
67 | .description = "Zebra's chunk cleanup procedure ran, but no label chunks were released.", | |
68 | .suggestion = "Ignore this error.", | |
69 | }, | |
70 | { | |
71 | .code = ZEBRA_ERR_DP_INVALID_RC, | |
72 | .title = "Dataplane returned invalid status code", | |
73 | .description = "The underlying dataplane responded to a Zebra message or other interaction with an unrecognized, unknown or invalid status code.", | |
74 | .suggestion = "Notify a developer.", | |
75 | }, | |
76 | { | |
77 | .code = ZEBRA_ERR_WQ_NONEXISTENT, | |
78 | .title = "A necessary work queue does not exist.", | |
79 | .description = "A necessary work queue does not exist.", | |
80 | .suggestion = "Notify a developer.", | |
81 | }, | |
82 | { | |
83 | .code = ZEBRA_ERR_FEC_ADD_FAILED, | |
84 | .title = "Failed to add FEC for MPLS client", | |
85 | .description = "A client requested a label binding for a new FEC, but Zebra was unable to add the FEC to its internal table.", | |
86 | .suggestion = "Notify a developer.", | |
87 | }, | |
88 | { | |
89 | .code = ZEBRA_ERR_FEC_RM_FAILED, | |
90 | .title = "Failed to remove FEC for MPLS client", | |
91 | .description = "Zebra was unable to find and remove a FEC in its internal table.", | |
92 | .suggestion = "Notify a developer.", | |
93 | }, | |
94 | { | |
95 | .code = ZEBRA_ERR_IRDP_LEN_MISMATCH, | |
96 | .title = "IRDP message length mismatch", | |
97 | .description = "The length encoded in the IP TLV does not match the length of the packet received.", | |
98 | .suggestion = "Notify a developer.", | |
99 | }, | |
100 | { | |
101 | .code = ZEBRA_ERR_RNH_UNKNOWN_FAMILY, | |
102 | .title = "Attempted to perform nexthop update for unknown address family", | |
103 | .description = "Zebra attempted to perform a nexthop update for unknown address family", | |
104 | .suggestion = "Notify a developer.", | |
105 | }, | |
106 | { | |
107 | .code = ZEBRA_ERR_DP_INSTALL_FAIL, | |
108 | .title = "Dataplane installation failure", | |
109 | .description = "Installation of routes to underlying dataplane failed.", | |
110 | .suggestion = "Check all configuration parameters for correctness.", | |
111 | }, | |
112 | { | |
113 | .code = ZEBRA_ERR_TABLE_LOOKUP_FAILED, | |
114 | .title = "Zebra table lookup failed", | |
115 | .description = "Zebra attempted to look up a table for a particular address family and subsequent address family, but didn't find anything.", | |
116 | .suggestion = "If you entered a command to trigger this error, make sure you entered the arguments correctly. Check your config file for any potential errors. If these look correct, seek help.", | |
117 | }, | |
118 | { | |
119 | .code = ZEBRA_ERR_NETLINK_NOT_AVAILABLE, | |
120 | .title = "Netlink backend not available", | |
121 | .description = "FRR was not compiled with support for Netlink. Any operations that require Netlink will fail.", | |
122 | .suggestion = "Recompile FRR with Netlink, or install a package that supports this feature.", | |
123 | }, | |
124 | { | |
125 | .code = ZEBRA_ERR_PROTOBUF_NOT_AVAILABLE, | |
126 | .title = "Protocol Buffers backend not available", | |
127 | .description = "FRR was not compiled with support for Protocol Buffers. Any operations that require Protobuf will fail.", | |
128 | .suggestion = "Recompile FRR with Protobuf support, or install a package that supports this feature.", | |
129 | }, | |
130 | { | |
131 | .code = ZEBRA_ERR_TM_EXHAUSTED_IDS, | |
132 | .title = "Table manager used all available IDs", | |
133 | .description = "Zebra's table manager used up all IDs available to it and can't assign any more.", | |
134 | .suggestion = "Reconfigure Zebra with a larger range of table IDs.", | |
135 | }, | |
136 | { | |
137 | .code = ZEBRA_ERR_TM_DAEMON_MISMATCH, | |
138 | .title = "Daemon mismatch when releasing table chunks", | |
139 | .description = "Zebra noticed a mismatch between a table ID chunk and a protocol daemon number instance when releasing unused table chunks.", | |
140 | .suggestion = "Ignore this error.", | |
141 | }, | |
142 | { | |
143 | .code = ZEBRA_ERR_TM_UNRELEASED_CHUNK, | |
144 | .title = "Zebra did not free any table chunks", | |
145 | .description = "Zebra's table chunk cleanup procedure ran, but no table chunks were released.", | |
146 | .suggestion = "Ignore this error.", | |
147 | }, | |
148 | { | |
149 | .code = ZEBRA_ERR_UNKNOWN_FAMILY, | |
150 | .title = "Address family specifier unrecognized", | |
151 | .description = "Zebra attempted to process information from somewhere that included an address family specifier, but did not recognize the provided specifier.", | |
152 | .suggestion = "Ensure that your configuration is correct. If it is, notify a developer.", | |
153 | }, | |
154 | { | |
155 | .code = ZEBRA_ERR_TM_WRONG_PROTO, | |
156 | .title = "Incorrect protocol for table manager client", | |
157 | .description = "Zebra's table manager only accepts connections from daemons managing dynamic routing protocols, but received a connection attempt from a daemon that does not meet this criterion.", | |
158 | .suggestion = "Notify a developer.", | |
159 | }, | |
160 | { | |
161 | .code = ZEBRA_ERR_PROTO_OR_INSTANCE_MISMATCH, | |
162 | .title = "Mismatch between message and client protocol and/or instance", | |
163 | .description = "Zebra detected a mismatch between a client's protocol and/or instance numbers versus those stored in a message transiting its socket.", | |
164 | .suggestion = "Notify a developer.", | |
165 | }, | |
166 | { | |
167 | .code = ZEBRA_ERR_LM_CANNOT_ASSIGN_CHUNK, | |
168 | .title = "Label manager unable to assign label chunk", | |
169 | .description = "Zebra's label manager was unable to assign a label chunk to client.", | |
170 | .suggestion = "Ensure that Zebra has a sufficient label range available and that there is not a range collision.", | |
171 | }, | |
172 | { | |
173 | .code = ZEBRA_ERR_LM_ALIENS, | |
174 | .title = "Label request from unidentified client", | |
175 | .description = "Zebra's label manager received a label request from an unidentified client.", | |
176 | .suggestion = "Notify a developer.", | |
177 | }, | |
178 | { | |
179 | .code = ZEBRA_ERR_TM_CANNOT_ASSIGN_CHUNK, | |
180 | .title = "Table manager unable to assign table chunk", | |
181 | .description = "Zebra's table manager was unable to assign a table chunk to a client.", | |
182 | .suggestion = "Ensure that Zebra has sufficient table ID range available and that there is not a range collision.", | |
183 | }, | |
184 | { | |
185 | .code = ZEBRA_ERR_TM_ALIENS, | |
186 | .title = "Table request from unidentified client", | |
187 | .description = "Zebra's table manager received a table request from an unidentified client.", | |
188 | .suggestion = "Notify a developer.", | |
189 | }, | |
190 | { | |
191 | .code = ZEBRA_ERR_RECVBUF, | |
192 | .title = "Cannot set receive buffer size", | |
193 | .description = "Socket receive buffer size could not be set in the kernel", | |
194 | .suggestion = "Ignore this error.", | |
195 | }, | |
196 | { | |
197 | .code = ZEBRA_ERR_UNKNOWN_NLMSG, | |
198 | .title = "Unknown Netlink message type", | |
199 | .description = "Zebra received a Netlink message with an unrecognized type field.", | |
200 | .suggestion = "Verify that you are running the latest version of FRR to ensure kernel compatibility. If the problem persists, notify a developer.", | |
201 | }, | |
202 | { | |
203 | .code = ZEBRA_ERR_RECVMSG_OVERRUN, | |
204 | .title = "Receive buffer overrun", | |
205 | .description = "The kernel's buffer for a socket has been overrun, rendering the socket invalid.", | |
206 | .suggestion = "Zebra will restart itself. Notify a developer if this issue shows up frequently.", | |
207 | }, | |
208 | { | |
209 | .code = ZEBRA_ERR_NETLINK_LENGTH_ERROR, | |
210 | .title = "Netlink message length mismatch", | |
211 | .description = "Zebra received a Netlink message with incorrect length fields.", | |
212 | .suggestion = "Notify a developer.", | |
213 | }, | |
214 | { | |
215 | .code = ZEBRA_ERR_NETLINK_LENGTH_ERROR, | |
216 | .title = "Netlink message length mismatch", | |
217 | .description = "Zebra received a Netlink message with incorrect length fields.", | |
218 | .suggestion = "Notify a developer.", | |
219 | }, | |
220 | { | |
221 | .code = ZEBRA_ERR_UNEXPECTED_MESSAGE, | |
222 | .title = "Received unexpected response from kernel", | |
223 | .description = "Received unexpected response from the kernel via Netlink.", | |
224 | .suggestion = "Notify a developer.", | |
225 | }, | |
226 | { | |
227 | .code = ZEBRA_ERR_NETLINK_BAD_SEQUENCE, | |
228 | .title = "Bad sequence number in Netlink message", | |
229 | .description = "Zebra received a Netlink message with a bad sequence number.", | |
230 | .suggestion = "Notify a developer.", | |
231 | }, | |
232 | { | |
233 | .code = ZEBRA_ERR_BAD_MULTIPATH_NUM, | |
234 | .title = "Multipath number was out of valid range", | |
235 | .description = "Multipath number specified to Zebra must be in the appropriate range", | |
236 | .suggestion = "Provide a multipath number that is within its accepted range", | |
237 | }, | |
238 | { | |
239 | .code = ZEBRA_ERR_PREFIX_PARSE_ERROR, | |
240 | .title = "String could not be parsed as IP prefix", | |
241 | .description = "There was an attempt to parse a string as an IPv4 or IPv6 prefix, but the string could not be parsed and this operation failed.", | |
242 | .suggestion = "Notify a developer.", | |
243 | }, | |
244 | { | |
245 | .code = ZEBRA_ERR_MAC_ADD_FAILED, | |
246 | .title = "Failed to add MAC address to interface", | |
247 | .description = "Zebra attempted to assign a MAC address to a vxlan interface but failed", | |
248 | .suggestion = "Notify a developer.", | |
249 | }, | |
250 | { | |
251 | .code = ZEBRA_ERR_VNI_DEL_FAILED, | |
252 | .title = "Failed to delete VNI", | |
253 | .description = "Zebra attempted to delete a VNI entry and failed", | |
254 | .suggestion = "Notify a developer.", | |
255 | }, | |
256 | { | |
257 | .code = ZEBRA_ERR_VTEP_ADD_FAILED, | |
258 | .title = "Adding remote VTEP failed", | |
259 | .description = "Zebra attempted to add a remote VTEP and failed.", | |
260 | .suggestion = "Notify a developer.", | |
261 | }, | |
262 | { | |
263 | .code = ZEBRA_ERR_VNI_ADD_FAILED, | |
264 | .title = "Adding VNI failed", | |
265 | .description = "Zebra attempted to add a VNI hash to an interface and failed", | |
266 | .suggestion = "Notify a developer.", | |
267 | }, | |
5ad4c39c QY |
268 | { |
269 | .code = END_FERR, | |
270 | } | |
43e52561 QY |
271 | }; |
272 | /* clang-format on */ | |
273 | ||
274 | ||
275 | void zebra_error_init(void) | |
276 | { | |
85cd2f9f | 277 | log_ref_add(ferr_zebra_err); |
43e52561 | 278 | } |