2 * Zebra-specific error messages.
3 * Copyright (C) 2018 Cumulus Networks, Inc.
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)
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
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
24 #include "zebra_errors.h"
26 /* clang-format off */
27 static struct log_ref ferr_zebra_err
[] = {
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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.",
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",
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.",
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.",
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.",
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.",
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.",
272 /* clang-format on */
275 void zebra_error_init(void)
277 log_ref_add(ferr_zebra_err
);