]> git.proxmox.com Git - mirror_frr.git/blob - zebra/zebra_errors.c
bgpd, zebra: auto assign labels from label pool to regular prefixes in BGP labeled...
[mirror_frr.git] / zebra / zebra_errors.c
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>
22
23 #include "lib/ferr.h"
24 #include "zebra_errors.h"
25
26 /* clang-format off */
27 static struct log_ref ferr_zebra_err[] = {
28 {
29 .code = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_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 = EC_ZEBRA_FEC_LABEL_INDEX_LABEL_CONFLICT,
90 .title = "Refused to add FEC for MPLS client with both label index and label specified",
91 .description = "A client requested a label binding for a new FEC specifying a label index and a label at the same time.",
92 .suggestion = "Notify a developer.",
93 },
94 {
95 .code = EC_ZEBRA_FEC_RM_FAILED,
96 .title = "Failed to remove FEC for MPLS client",
97 .description = "Zebra was unable to find and remove a FEC in its internal table.",
98 .suggestion = "Notify a developer.",
99 },
100 {
101 .code = EC_ZEBRA_IRDP_LEN_MISMATCH,
102 .title = "IRDP message length mismatch",
103 .description = "The length encoded in the IP TLV does not match the length of the packet received.",
104 .suggestion = "Notify a developer.",
105 },
106 {
107 .code = EC_ZEBRA_RNH_UNKNOWN_FAMILY,
108 .title = "Attempted to perform nexthop update for unknown address family",
109 .description = "Zebra attempted to perform a nexthop update for unknown address family",
110 .suggestion = "Notify a developer.",
111 },
112 {
113 .code = EC_ZEBRA_DP_INSTALL_FAIL,
114 .title = "Dataplane installation failure",
115 .description = "Installation of routes to underlying dataplane failed.",
116 .suggestion = "Check all configuration parameters for correctness.",
117 },
118 {
119 .code = EC_ZEBRA_DP_DELETE_FAIL,
120 .title = "Dataplane deletion failure",
121 .description = "Deletion of routes from underlying dataplane failed.",
122 .suggestion = "Check all configuration parameters for correctness.",
123 },
124 {
125 .code = EC_ZEBRA_TABLE_LOOKUP_FAILED,
126 .title = "Zebra table lookup failed",
127 .description = "Zebra attempted to look up a table for a particular address family and subsequent address family, but didn't find anything.",
128 .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.",
129 },
130 {
131 .code = EC_ZEBRA_NETLINK_NOT_AVAILABLE,
132 .title = "Netlink backend not available",
133 .description = "FRR was not compiled with support for Netlink. Any operations that require Netlink will fail.",
134 .suggestion = "Recompile FRR with Netlink, or install a package that supports this feature.",
135 },
136 {
137 .code = EC_ZEBRA_PROTOBUF_NOT_AVAILABLE,
138 .title = "Protocol Buffers backend not available",
139 .description = "FRR was not compiled with support for Protocol Buffers. Any operations that require Protobuf will fail.",
140 .suggestion = "Recompile FRR with Protobuf support, or install a package that supports this feature.",
141 },
142 {
143 .code = EC_ZEBRA_TM_EXHAUSTED_IDS,
144 .title = "Table manager used all available IDs",
145 .description = "Zebra's table manager used up all IDs available to it and can't assign any more.",
146 .suggestion = "Reconfigure Zebra with a larger range of table IDs.",
147 },
148 {
149 .code = EC_ZEBRA_TM_DAEMON_MISMATCH,
150 .title = "Daemon mismatch when releasing table chunks",
151 .description = "Zebra noticed a mismatch between a table ID chunk and a protocol daemon number instance when releasing unused table chunks.",
152 .suggestion = "Ignore this error.",
153 },
154 {
155 .code = EC_ZEBRA_TM_UNRELEASED_CHUNK,
156 .title = "Zebra did not free any table chunks",
157 .description = "Zebra's table chunk cleanup procedure ran, but no table chunks were released.",
158 .suggestion = "Ignore this error.",
159 },
160 {
161 .code = EC_ZEBRA_UNKNOWN_FAMILY,
162 .title = "Address family specifier unrecognized",
163 .description = "Zebra attempted to process information from somewhere that included an address family specifier, but did not recognize the provided specifier.",
164 .suggestion = "Ensure that your configuration is correct. If it is, notify a developer.",
165 },
166 {
167 .code = EC_ZEBRA_TM_WRONG_PROTO,
168 .title = "Incorrect protocol for table manager client",
169 .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.",
170 .suggestion = "Notify a developer.",
171 },
172 {
173 .code = EC_ZEBRA_PROTO_OR_INSTANCE_MISMATCH,
174 .title = "Mismatch between message and client protocol and/or instance",
175 .description = "Zebra detected a mismatch between a client's protocol and/or instance numbers versus those stored in a message transiting its socket.",
176 .suggestion = "Notify a developer.",
177 },
178 {
179 .code = EC_ZEBRA_LM_CANNOT_ASSIGN_CHUNK,
180 .title = "Label manager unable to assign label chunk",
181 .description = "Zebra's label manager was unable to assign a label chunk to client.",
182 .suggestion = "Ensure that Zebra has a sufficient label range available and that there is not a range collision.",
183 },
184 {
185 .code = EC_ZEBRA_LM_ALIENS,
186 .title = "Label request from unidentified client",
187 .description = "Zebra's label manager received a label request from an unidentified client.",
188 .suggestion = "Notify a developer.",
189 },
190 {
191 .code = EC_ZEBRA_TM_CANNOT_ASSIGN_CHUNK,
192 .title = "Table manager unable to assign table chunk",
193 .description = "Zebra's table manager was unable to assign a table chunk to a client.",
194 .suggestion = "Ensure that Zebra has sufficient table ID range available and that there is not a range collision.",
195 },
196 {
197 .code = EC_ZEBRA_TM_ALIENS,
198 .title = "Table request from unidentified client",
199 .description = "Zebra's table manager received a table request from an unidentified client.",
200 .suggestion = "Notify a developer.",
201 },
202 {
203 .code = EC_ZEBRA_RECVBUF,
204 .title = "Cannot set receive buffer size",
205 .description = "Socket receive buffer size could not be set in the kernel",
206 .suggestion = "Ignore this error.",
207 },
208 {
209 .code = EC_ZEBRA_UNKNOWN_NLMSG,
210 .title = "Unknown Netlink message type",
211 .description = "Zebra received a Netlink message with an unrecognized type field.",
212 .suggestion = "Verify that you are running the latest version of FRR to ensure kernel compatibility. If the problem persists, notify a developer.",
213 },
214 {
215 .code = EC_ZEBRA_RECVMSG_OVERRUN,
216 .title = "Receive buffer overrun",
217 .description = "The kernel's buffer for a socket has been overrun, rendering the socket invalid.",
218 .suggestion = "Zebra will restart itself. Notify a developer if this issue shows up frequently.",
219 },
220 {
221 .code = EC_ZEBRA_NETLINK_LENGTH_ERROR,
222 .title = "Netlink message length mismatch",
223 .description = "Zebra received a Netlink message with incorrect length fields.",
224 .suggestion = "Notify a developer.",
225 },
226 {
227 .code = EC_ZEBRA_NETLINK_LENGTH_ERROR,
228 .title = "Netlink message length mismatch",
229 .description = "Zebra received a Netlink message with incorrect length fields.",
230 .suggestion = "Notify a developer.",
231 },
232 {
233 .code = EC_ZEBRA_UNEXPECTED_MESSAGE,
234 .title = "Received unexpected response from kernel",
235 .description = "Received unexpected response from the kernel via Netlink.",
236 .suggestion = "Notify a developer.",
237 },
238 {
239 .code = EC_ZEBRA_NETLINK_BAD_SEQUENCE,
240 .title = "Bad sequence number in Netlink message",
241 .description = "Zebra received a Netlink message with a bad sequence number.",
242 .suggestion = "Notify a developer.",
243 },
244 {
245 .code = EC_ZEBRA_BAD_MULTIPATH_NUM,
246 .title = "Multipath number was out of valid range",
247 .description = "Multipath number specified to Zebra must be in the appropriate range",
248 .suggestion = "Provide a multipath number that is within its accepted range",
249 },
250 {
251 .code = EC_ZEBRA_PREFIX_PARSE_ERROR,
252 .title = "String could not be parsed as IP prefix",
253 .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.",
254 .suggestion = "Notify a developer.",
255 },
256 {
257 .code = EC_ZEBRA_MAC_ADD_FAILED,
258 .title = "Failed to add MAC address to interface",
259 .description = "Zebra attempted to assign a MAC address to a vxlan interface but failed",
260 .suggestion = "Notify a developer.",
261 },
262 {
263 .code = EC_ZEBRA_VNI_DEL_FAILED,
264 .title = "Failed to delete VNI",
265 .description = "Zebra attempted to delete a VNI entry and failed",
266 .suggestion = "Notify a developer.",
267 },
268 {
269 .code = EC_ZEBRA_VTEP_ADD_FAILED,
270 .title = "Adding remote VTEP failed",
271 .description = "Zebra attempted to add a remote VTEP and failed.",
272 .suggestion = "Notify a developer.",
273 },
274 {
275 .code = EC_ZEBRA_VNI_ADD_FAILED,
276 .title = "Adding VNI failed",
277 .description = "Zebra attempted to add a VNI hash to an interface and failed",
278 .suggestion = "Notify a developer.",
279 },
280 {
281 .code = EC_ZEBRA_NS_NOTIFY_READ,
282 .title = "Zebra failed to read namespace inotify information",
283 .description = "Zebra received an event from inotify, but failed to read what it was.",
284 .suggestion = "Notify a developer.",
285 },
286 /* Warnings */
287 {
288 .code = EC_ZEBRAING_LM_PROTO_MISMATCH,
289 .title =
290 "Zebra label manager received malformed label request",
291 .description =
292 "Zebra's label manager received a label request from a client whose protocol type does not match the protocol field received in the message.",
293 .suggestion =
294 "This is a bug. Please report it.",
295 },
296 {
297 .code = EC_ZEBRA_LSP_INSTALL_FAILURE,
298 .title =
299 "Zebra failed to install LSP into the kernel",
300 .description =
301 "Zebra made an attempt to install a label switched path, but the kernel indicated that the installation was not successful.",
302 .suggestion =
303 "Wait for Zebra to reattempt installation.",
304 },
305 {
306 .code = EC_ZEBRA_LSP_DELETE_FAILURE,
307 .title =
308 "Zebra failed to remove LSP from the kernel",
309 .description =
310 "Zebra made an attempt to remove a label switched path, but the kernel indicated that the deletion was not successful.",
311 .suggestion =
312 "Wait for Zebra to reattempt deletion.",
313 },
314 {
315 .code = EC_ZEBRA_MPLS_SUPPORT_DISABLED,
316 .title =
317 "Zebra will not run with MPLS support",
318 .description =
319 "Zebra noticed that the running kernel does not support MPLS, so it disabled MPLS support.",
320 .suggestion =
321 "If you want MPLS support, upgrade the kernel to a version that provides MPLS support.",
322 },
323 {
324 .code = EC_ZEBRA_SYSCTL_FAILED,
325 .title = "A call to sysctl() failed",
326 .description =
327 "sysctl() returned a nonzero exit code, indicating an error.",
328 .suggestion =
329 "The log message should contain further details on the specific error that occurred; investigate the reported error.",
330 },
331 {
332 .code = EC_ZEBRA_NS_VRF_CREATION_FAILED,
333 .title =
334 "Zebra failed to create namespace VRF",
335 .description =
336 "Zebra failed to create namespace VRF",
337 .suggestion = "",
338 },
339 {
340 .code = EC_ZEBRA_NS_DELETION_FAILED_NO_VRF,
341 .title =
342 "Zebra attempted to delete nonexistent namespace",
343 .description =
344 "Zebra attempted to delete a particular namespace, but no VRF associated with that namespace could be found to delete.",
345 .suggestion = "Please report this bug.",
346 },
347 {
348 .code = EC_ZEBRA_IFLIST_FAILED,
349 .title =
350 "Zebra interface listing failed",
351 .description =
352 "Zebra encountered an error attempting to query sysctl for a list of interfaces on the system.",
353 .suggestion =
354 "Check that Zebra is running with the appropriate permissions. If it is, please report this as a bug.",
355 },
356 {
357 .code = EC_ZEBRA_IRDP_BAD_CHECKSUM,
358 .title =
359 "Zebra received ICMP packet with invalid checksum",
360 .description =
361 "Zebra received an ICMP packet with a bad checksum and has silently ignored it.",
362 .suggestion =
363 "If the problem continues to occur, investigate the source of the bad ICMP packets.",
364 },
365 {
366 .code = EC_ZEBRA_IRDP_BAD_TYPE_CODE,
367 .title =
368 "Zebra received ICMP packet with bad type code",
369 .description =
370 "Zebra received an ICMP packet with a bad code for the message type and has silently ignored it.",
371 .suggestion =
372 "If the problem continues to occur, investigate the source of the bad ICMP packets.",
373 },
374 {
375 .code = EC_ZEBRA_IRDP_BAD_RX_FLAGS,
376 .title =
377 "Zebra received IRDP packet while operating in wrong mode",
378 .description =
379 "Zebra received a multicast IRDP packet while operating in unicast mode, or vice versa.",
380 .suggestion =
381 "If you wish to receive the messages, change your IRDP settings accordingly.",
382 },
383 {
384 .code = EC_ZEBRA_IRDP_BAD_TYPE,
385 .title =
386 "Zebra received IRDP packet with bad type",
387 .description =
388 "THIS IS BULLSHIT REMOVE ME",
389 .suggestion = "asdf",
390 },
391 {
392 .code = EC_ZEBRA_RNH_NO_TABLE,
393 .title =
394 "Zebra could not find table for next hop",
395 .description =
396 "Zebra attempted to add a next hop but could not find the appropriate table to install it in.",
397 .suggestion = "Please report this bug.",
398 },
399 {
400 .code = EC_ZEBRA_FPM_FORMAT_UNKNOWN,
401 .title =
402 "Unknown message format for Zebra's FPM module",
403 .description =
404 "Zebra's FPM module takes an argument which specifies the message format to use, but the format was either not provided or was not a valid format. The FPM interface will be disabled.",
405 .suggestion =
406 "Provide or correct the module argument to provide a valid format. See documentation for further information.",
407 },
408 {
409 .code = EC_ZEBRA_CLIENT_IO_ERROR,
410 .title =
411 "Zebra client connection failed",
412 .description =
413 "A Zebra client encountered an I/O error and is shutting down. This can occur under normal circumstances, such as when FRR is restarting or shutting down; it can also happen if the daemon crashed. Usually this warning can be ignored.",
414 .suggestion =
415 "Ignore this warning, it is mostly informational.",
416 },
417 {
418 .code = EC_ZEBRA_CLIENT_WRITE_FAILED,
419 .title =
420 "Zebra failed to send message to client",
421 .description =
422 "Zebra attempted to send a message to one of its clients, but the write operation failed. The connection will be closed.",
423 .suggestion =
424 "Ignore this warning, it is mostly informational.",
425 },
426 {
427 .code = EC_ZEBRA_NETLINK_INVALID_AF,
428 .title =
429 "Zebra received Netlink message with invalid family",
430 .description =
431 "Zebra received a Netlink message with an invalid address family.",
432 .suggestion =
433 "Inspect the logged address family and submit it with a bug report.",
434 },
435 {
436 .code = EC_ZEBRA_REMOVE_ADDR_UNKNOWN_SUBNET,
437 .title =
438 "Zebra tried to remove address from unknown subnet",
439 .description =
440 "Zebra attempted to remove an address from an unknown subnet.",
441 .suggestion =
442 "This is a bug, please report it.",
443 },
444 {
445 .code = EC_ZEBRA_REMOVE_UNREGISTERED_ADDR,
446 .title =
447 "Zebra tried to remove unregistered address",
448 .description =
449 "Zebra attempted to remove an address from a subnet it was not registered on.",
450 .suggestion =
451 "This is a bug, please report it.",
452 },
453 {
454 .code = EC_ZEBRA_PTM_NOT_READY,
455 .title =
456 "Interface is up but PTM check has not completed",
457 .description =
458 "Zebra noticed that an interface came up and attempted to perform its usual setup procedures, but the PTM check failed and the operation was aborted.",
459 .suggestion =
460 "If the problem persists, ensure that the interface is actually up and that PTM is functioning properly.",
461 },
462 {
463 .code = EC_ZEBRA_UNSUPPORTED_V4_SRCDEST,
464 .title =
465 "Kernel rejected sourcedest route",
466 .description =
467 "Zebra attempted to install a sourcedest route into the kernel, but the kernel did not acknowledge its installation. The route is unsupported.",
468 .suggestion =
469 "Check configuration values for correctness",
470 },
471 {
472 .code = EC_ZEBRA_UNKNOWN_INTERFACE,
473 .title =
474 "Zebra encountered an unknown interface specifier",
475 .description =
476 "Zebra was asked to look up an interface with a given name or index, but could not find the interface corresponding to the given name or index.",
477 .suggestion =
478 "Check configuration values for correctness.",
479 },
480 {
481 .code = EC_ZEBRA_VRF_NOT_FOUND,
482 .title =
483 "Zebra could not find the specified VRF",
484 .description =
485 "Zebra tried to look up a VRF, either by name or ID, and could not find it. This could be due to internal inconsistency (a bug) or a configuration error.",
486 .suggestion =
487 "Check configuration values for correctness. If values are correct, please file a bug report.",
488 },
489 {
490 .code = EC_ZEBRA_MORE_NH_THAN_MULTIPATH,
491 .title =
492 "More nexthops were provided than the configured multipath limit",
493 .description =
494 "A route with multiple nexthops was given, but the number of nexthops exceeded the configured multipath limit.",
495 .suggestion =
496 "Reduce the number of nexthops, or increase the multipath limit.",
497 },
498 {
499 .code = EC_ZEBRA_NEXTHOP_CREATION_FAILED,
500 .title =
501 "Zebra failed to create one or more nexthops",
502 .description =
503 "While attempting to create nexthops for a route installation operation, Zebra found that it was unable to create one or more of the given nexthops.",
504 .suggestion =
505 "Check configuration values for correctness. If they are correct, report this as a bug.",
506 },
507 {
508 .code = EC_ZEBRA_RX_SRCDEST_WRONG_AFI,
509 .title =
510 "Zebra received sourcedest route install without IPv6 address family",
511 .description =
512 "Zebra received a message from a client requesting a sourcedest route installation, but the address family was not set to IPv6. Only IPv6 is supported for sourcedest routing.",
513 .suggestion =
514 "This is a bug; please report it.",
515 },
516 {
517 .code = EC_ZEBRA_PSEUDOWIRE_EXISTS,
518 .title =
519 "Zebra received an installation / creation request for a pseudowire that already exists",
520 .description =
521 "Zebra received an installation or creation request for a pseudowire that already exists, so the installation / creation has been skipped.",
522 .suggestion =
523 "This message is informational.",
524 },
525 {
526 .code = EC_ZEBRA_PSEUDOWIRE_NONEXISTENT,
527 .title =
528 "Zebra received an uninstallation / deletion request for a pseudowire that already exists",
529 .description =
530 "Zebra received an uninstallation / deletion request for a pseudowire that doesn't exist, so the uninstallation / deletion has been skipped.",
531 .suggestion =
532 "This message is informational.",
533 },
534 {
535 .code = EC_ZEBRA_PSEUDOWIRE_UNINSTALL_NOT_FOUND,
536 .title =
537 "Zebra received uninstall request for a pseudowire that doesn't exist",
538 .description =
539 "Zebra received an uninstall request for a pseudowire that doesn't exist, so the uninstallation has been skipped.",
540 .suggestion =
541 "This message is informational.",
542 },
543 {
544 .code = EC_ZEBRA_NO_IFACE_ADDR,
545 .title = "No address on interface",
546 .description =
547 "Zebra attempted to retrieve a connected address for an interface, but the interface had no connected addresses.",
548 .suggestion =
549 "This warning is situational; it is usually informative but can indicate a misconfiguration.",
550 },
551 {
552 .code = EC_ZEBRA_IFACE_ADDR_ADD_FAILED,
553 .title =
554 "Zebra failed to add address to interface",
555 .description =
556 "Zebra attempted to add an address to an interface but was unsuccessful.",
557 .suggestion =
558 "Check configuration values for correctness.",
559 },
560 {
561 .code = EC_ZEBRA_IRDP_CANNOT_ACTIVATE_IFACE,
562 .title =
563 "Zebra could not enable IRDP on interface",
564 .description =
565 "Zebra attempted to enable IRDP on an interface, but could not create the IRDP socket. The system may be out of socket resources, or privilege elevation may have failed.",
566 .suggestion =
567 "Verify that Zebra has the appropriate privileges and that the system has sufficient socket resources.",
568 },
569 {
570 .code = EC_ZEBRA_IRDP_IFACE_DOWN,
571 .title =
572 "Zebra attempted to enable IRDP on an interface, but the interface was down",
573 .description = "Zebra attempted to enable IRDP on an interface, but the interface was down.",
574 .suggestion =
575 "Bring up the interface that IRDP is desired on.",
576 },
577 {
578 .code = EC_ZEBRA_IRDP_IFACE_MCAST_DISABLED,
579 .title =
580 "Zebra cannot enable IRDP on interface because multicast is disabled",
581 .description =
582 "Zebra attempted to enable IRDP on an interface, but multicast functionality was not enabled on the interface.",
583 .suggestion =
584 "Enable multicast on the interface.",
585 },
586 {
587 .code = EC_ZEBRA_NETLINK_EXTENDED_WARNING,
588 .title =
589 "Zebra received warning message from Netlink",
590 .description =
591 "Zebra received a warning message from Netlink",
592 .suggestion =
593 "This message is informational. See the Netlink error message for details.",
594 },
595 {
596 .code = EC_ZEBRA_NAMESPACE_DIR_INACCESSIBLE,
597 .title =
598 "Zebra could not access /var/run/netns",
599 .description =
600 "Zebra tried to verify that the run directory for Linux network namespaces existed, but this test failed.",
601 .suggestion =
602 "Ensure that Zebra has the proper privileges to access this directory.",
603 },
604 {
605 .code = EC_ZEBRA_CONNECTED_AFI_UNKNOWN,
606 .title =
607 "Zebra received unknown address family on interface",
608 .description =
609 "Zebra received a notification of a connected prefix on an interface but did not recognize the address family as IPv4 or IPv6",
610 .suggestion =
611 "This message is informational.",
612 },
613 {
614 .code = EC_ZEBRA_IFACE_SAME_LOCAL_AS_PEER,
615 .title =
616 "Zebra route has same destination address as local interface",
617 .description =
618 "Zebra noticed that a route on an interface has the same destination address as an address on the interface itself, which may cause issues with routing protocols.",
619 .suggestion =
620 "Investigate the source of the route to determine why the destination and interface addresses are the same.",
621 },
622 {
623 .code = EC_ZEBRA_BCAST_ADDR_MISMATCH,
624 .title =
625 "Zebra broadcast address sanity check failed",
626 .description =
627 "Zebra computed the broadcast address for a connected prefix based on the netmask and found that it did not match the broadcast address it received for the prefix on that interface",
628 .suggestion =
629 "Investigate the source of the broadcast address to determine why it does not match the computed address.",
630 },
631 {
632 .code = EC_ZEBRA_REDISTRIBUTE_UNKNOWN_AF,
633 .title =
634 "Zebra encountered unknown address family during redistribution",
635 .description =
636 "During a redistribution operation Zebra encountered an unknown address family.",
637 .suggestion =
638 "This warning can be ignored; the redistribution operation will skip the unknown address family.",
639 },
640 {
641 .code = EC_ZEBRA_ADVERTISING_UNUSABLE_ADDR,
642 .title =
643 "Zebra advertising unusable interface address",
644 .description =
645 "Zebra is advertising an address on an interface that is not yet fully installed on the interface.",
646 .suggestion =
647 "This message is informational. The address should show up on the interface shortly after advertisement.",
648 },
649 {
650 .code = EC_ZEBRA_RA_PARAM_MISMATCH,
651 .title =
652 "Zebra received route advertisement with parameter mismatch",
653 .description =
654 "Zebra received a router advertisement, but one of the non-critical parameters (AdvCurHopLimit, AdvManagedFlag, AdvOtherConfigFlag, AdvReachableTime or AdvRetransTimer) does not match Zebra's local settings.",
655 .suggestion =
656 "This message is informational; the route advertisement will be processed as normal. If issues arise due to the parameter mismatch, check Zebra's router advertisement configuration.",
657 },
658 {
659 .code = EC_ZEBRA_RTM_VERSION_MISMATCH,
660 .title =
661 "Zebra received kernel message with uknown version",
662 .description =
663 "Zebra received a message from the kernel with a message version that does not match Zebra's internal version. Depending on version compatibility, this may cause issues sending and receiving messages to the kernel.",
664 .suggestion =
665 "If issues arise, check if there is a version of FRR available for your kernel version.",
666 },
667 {
668 .code = EC_ZEBRA_RTM_NO_GATEWAY,
669 .title =
670 "Zebra could not determine proper gateway for kernel route",
671 .description =
672 "Zebra attempted to install a route into the kernel, but noticed it had no gateway and no interface with a gateway could be located.",
673 .suggestion =
674 "Check configuration values for correctness.",
675 },
676 {
677 .code = EC_ZEBRA_MAX_LABELS_PUSH,
678 .title =
679 "Zebra exceeded maximum LSP labels for a single rtmsg",
680 .description =
681 "Zebra attempted to push more than one label into the kernel; the maximum on OpenBSD is 1 label.",
682 .suggestion =
683 "This message is informational.",
684 },
685 {
686 .code = EC_ZEBRA_STICKY_MAC_ALREADY_LEARNT,
687 .title =
688 "EVPN MAC already learnt as remote sticky MAC",
689 .description =
690 "Zebra tried to handle a local MAC addition but noticed that it had already learnt the MAC from a remote peer.",
691 .suggestion =
692 "Check configuration values for correctness.",
693 },
694 {
695 .code = EC_ZEBRA_UNSUPPORTED_V6_SRCDEST,
696 .title =
697 "Kernel does not support IPv6 sourcedest routes",
698 .description =
699 "Zebra attempted to install a sourcedest route into the kernel, but IPv6 sourcedest routes are not supported on the current kernel.",
700 .suggestion =
701 "Do not use v6 sourcedest routes, or upgrade your kernel.",
702 },
703 {
704 .code = EC_ZEBRA_DUP_MAC_DETECTED,
705 .title =
706 "EVPN MAC is detected duplicate",
707 .description =
708 "Zebra has hit duplicate address detection threshold which means host MAC is moving.",
709 .suggestion =
710 "Check network topology to detect duplicate host MAC for correctness.",
711 },
712 {
713 .code = EC_ZEBRA_DUP_IP_INHERIT_DETECTED,
714 .title =
715 "EVPN IP is detected duplicate by MAC",
716 .description =
717 "Zebra has hit duplicate address detection threshold which means MAC-IP pair is moving.",
718 .suggestion =
719 "Check network topology to detect duplicate host MAC for correctness.",
720 },
721 {
722 .code = EC_ZEBRA_DUP_IP_DETECTED,
723 .title =
724 "EVPN IP is detected duplicate",
725 .description =
726 "Zebra has hit duplicate address detection threshold which means host IP is moving.",
727 .suggestion =
728 "Check network topology to detect duplicate host IP for correctness.",
729 },
730 {
731 .code = END_FERR,
732 }
733 };
734 /* clang-format on */
735
736
737 void zebra_error_init(void)
738 {
739 log_ref_add(ferr_zebra_err);
740 }