]> git.proxmox.com Git - mirror_frr.git/blame - bgpd/bgp_errors.c
bgpd: Convert bgp_evpn.c to use flow_warn
[mirror_frr.git] / bgpd / bgp_errors.c
CommitLineData
14454c9f 1/*
247dcce2 2 * BGP-specific error messages.
14454c9f
DS
3 * Copyright (C) 2018 Cumulus Networks, Inc.
4 * Don Slice
5 *
247dcce2
QY
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.
14454c9f 10 *
247dcce2
QY
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.
14454c9f
DS
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 */
247dcce2 20
14454c9f 21#include <zebra.h>
14454c9f 22
247dcce2
QY
23#include "lib/ferr.h"
24#include "bgp_errors.h"
25
26/* clang-format off */
559aaa30
DS
27static struct log_ref ferr_bgp_warn[] = {
28 {
29 .code = BGP_WARN_ASPATH_FEWER_HOPS,
30 .title = "BGP AS-path conversion has failed",
31 .description = "BGP has attempted to convert a AS2 to AS4 path and has failed",
32 .suggestion = "Open an Issue with all relevant log files and restart FRR"
33 },
34 {
35 .code = BGP_WARN_DEFUNCT_SNPA_LEN,
36 .title = "BGP has received a value in a reserved field",
37 .description = "BGP has received a non-zero value in a reserved field that was used for SNPA-length at one point in time",
38 .suggestion = "BGP has peered with either a router that is attempting to send SNPA data or it has received a corrupted packet. If we are peering with a SNPA aware router(unlikely) upgrade that router, else open an Issue after gathering relevant log files",
39 },
40 {
41 .code = BGP_WARN_MISSING_ATTRIBUTE,
42 .title = "BGP has received an update with missing a missing attribute",
43 .description = "BGP received update packets must have some minimum attribute information within them",
44 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
45 },
46 {
47 .code = BGP_WARN_ATTRIBUTE_TOO_SMALL,
48 .title = "BGP udate packet with attribute data that is too small",
49 .description = "BGP has received an update packet that is too small to parse a given attribute. This typically means that something has gone wrong between us and the remote peer",
50 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
51 },
52 {
53 .code = BGP_WARN_EXT_ATTRIBUTE_TOO_SMALL,
54 .title = "BGP udate packet with extended attribute data that is too small",
55 .description = "BGP has received an update packet that is too small to parse a given extended attribute. This typically means that something has gone wrong between us and the remote peer",
56 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
57 },
58 {
59 .code = BGP_WARN_ATTRIBUTE_REPEATED,
60 .title = "BGP update packet received with a repeated attribute",
61 .description = "BGP has received an update packet with a attribute that is repeated more than one time for a particular route. This typically means that something has gone wrong between us and the remote peer",
62 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
63 },
64 {
65 .code = BGP_WARN_ATTRIBUTE_TOO_LARGE,
66 .title = "BGP udate packet with attribute data that is too large",
67 .description = "BGP has received an update packet that has too much data in a particular attribute. This typically means that something has gone wrong between us and the remote peer",
68 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
69 },
70 {
71 .code = BGP_WARN_ATTRIBUTE_PARSE_ERROR,
72 .title = "BGP update packet with attribute data has a parse error, specific to the attribute",
73 .description = "BGP has received an update packet with an attribute that when parsed does not make sense in some manner",
74 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
75 },
76 {
77 .code = BGP_WARN_ATTRIBUTE_PARSE_WITHDRAW,
78 .title = "BGP update packet with a broken optional attribute has caused a withdraw of associated routes",
79 .description = "BGP has received a update packet with optional attributes that did not parse correctly, instead of resetting the peer, withdraw associated routes and note that this has happened",
80 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
81 },
82 {
83 .code = BGP_WARN_ATTRIBUTE_FETCH_ERROR,
84 .title = "BGP update packet with a broken length",
85 .description = "BGP has received a update packet with an attribute that has an incorrect length",
86 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
87 },
88 {
89 .code = BGP_WARN_ATTRIBUTES_MISMATCH,
90 .title = "BGP update packet with a length different than attribute data length",
91 .description = "BGP has received a update packet with attributes that when parsed do not correctly add up to packet data length",
92 .suggestion = "Gather log data from this and remote peer and open an Issue with this data",
93 },
7077f45c
DS
94 {
95 .code = BGP_WARN_DUMP,
96 .title = "BGP MRT dump subsystem has encountered an issue",
97 .description = "BGP has found that the attempted write of MRT data to a dump file has failed",
98 .suggestion = "Ensure BGP has permissions to write the specified file",
99 },
63d430ce
DS
100 {
101 .code = BGP_WARN_UPDATE_PACKET_SHORT,
102 .title = "BGP Update Packet is to Small",
103 .description = "The update packet received from a peer is to small",
104 .suggestion = "Determine the source of the update packet and examine that peer for what has gone wrong",
105 },
106 {
107 .code = BGP_WARN_UPDATE_PACKET_LONG,
108 .title = "BGP Update Packet is to large",
109 .description = "The update packet received from a peer is to large",
110 .suggestion = "Determine the source of the update packet and examine that peer for what has gone wrong",
111 },
112 {
113 .code = BGP_WARN_UNRECOGNIZED_CAPABILITY,
114 .title = "Unknown BGP Capability Received",
115 .description = "The negotiation of capabilities has received a capability that we do not know what to do with",
116 .suggestion = "Determine the source of the capability and remove the capability from what is sent",
117 },
28f22e26
DS
118 {
119 .code = BGP_WARN_NO_TCP_MD5,
120 .title = "Unable to set TCP MD5 option on socket",
121 .description = "BGP attempted to setup TCP MD5 configuration on the socket as per configuration but was unable to",
122 .suggestion = "Please collect log files and open Issue",
123 },
124 {
125 .code = BGP_WARN_NO_SOCKOPT_MARK,
126 .title = "Unable to set socket MARK option",
127 .description = "BGP attempted to set the SO_MARK option for a socket and was unable to do so",
128 .suggestion = "Please collect log files and open Issue",
129 },
28642513
DS
130 {
131 .code = BGP_WARN_EVPN_PMSI_PRESENT,
132 .title = "BGP Received a EVPN NLRI with PMSI included",
133 .description = "BGP has received a type-3 NLRI with PMSI information. At this time FRR is not capable of properly handling this NLRI type",
134 .suggestion = "Setup peer to not send this type of data to FRR"
135 },
136 {
137 .code = BGP_WARN_EVPN_VPN_VNI,
138 .title = "BGP has received a local macip and cannot properly handle it",
139 .description = "BGP has received a local macip from zebra and has no way to properly handle the macip because the vni is not setup properly",
140 .suggestion = "Ensure proper setup of BGP EVPN",
141 },
142 {
143 .code = BGP_WARN_EVPN_ESI,
144 .title = "BGP has received a local ESI for deletion",
145 .description = "BGP has received a local ESI for deletion but when attempting to find the stored data internally was unable to find the information for deletion",
146 .suggestion = "Gather logging and open an Issue",
147 },
559aaa30
DS
148 {
149 .code = END_FERR,
150 }
151};
152
85cd2f9f 153static struct log_ref ferr_bgp_err[] = {
14454c9f
DS
154 {
155 .code = BGP_ERR_ATTR_FLAG,
156 .title = "BGP attribute flag is incorrect",
157 .description = "BGP attribute flag is set to the wrong value (Optional/Transitive/Partial)",
164ffab2 158 .suggestion = "Determine the soure of the attribute and determine why the attribute flag has been set incorrectly"
14454c9f
DS
159 },
160 {
161 .code = BGP_ERR_ATTR_LEN,
162 .title = "BGP attribute length is incorrect",
164ffab2
QY
163 .description = "BGP attribute length is incorrect",
164 .suggestion = "Determine the soure of the attribute and determine why the attribute length has been set incorrectly"
14454c9f
DS
165 },
166 {
167 .code = BGP_ERR_ATTR_ORIGIN,
168 .title = "BGP attribute origin value invalid",
169 .description = "BGP attribute origin value is invalid",
164ffab2 170 .suggestion = "Determine the soure of the attribute and determine why the origin attribute has been set incorrectly"
14454c9f
DS
171 },
172 {
173 .code = BGP_ERR_ATTR_MAL_AS_PATH,
174 .title = "BGP as path is invalid",
175 .description = "BGP as path has been malformed",
164ffab2 176 .suggestion = "Determine the soure of the update and determine why the as path has been set incorrectly"
14454c9f
DS
177 },
178 {
179 .code = BGP_ERR_ATTR_FIRST_AS,
180 .title = "BGP as path first as is invalid",
181 .description = "BGP update has invalid first as in as path",
164ffab2 182 .suggestion = "Determine the soure of the update and determine why the as path first as value has been set incorrectly"
14454c9f
DS
183 },
184 {
185 .code = BGP_ERR_ATTR_PMSI_TYPE,
186 .title = "BGP PMSI tunnel attribute type is invalid",
187 .description = "BGP update has invalid type for PMSI tunnel",
164ffab2 188 .suggestion = "Determine the soure of the update and determine why the PMSI tunnel attribute type has been set incorrectly"
14454c9f
DS
189 },
190 {
191 .code = BGP_ERR_ATTR_PMSI_LEN,
192 .title = "BGP PMSI tunnel attribute length is invalid",
193 .description = "BGP update has invalid length for PMSI tunnel",
164ffab2 194 .suggestion = "Determine the soure of the update and determine why the PMSI tunnel attribute length has been set incorrectly"
14454c9f 195 },
14454c9f
DS
196 {
197 .code = BGP_ERR_PEER_GROUP,
198 .title = "BGP peergroup operated on in error",
199 .description = "BGP operating on peer-group instead of peers included",
200 .suggestion = "Ensure the config doesn't contain peergroups contained within peergroups"
201 },
202 {
203 .code = BGP_ERR_PEER_DELETE,
204 .title = "BGP failed to delete peer structure",
205 .description = "BGP was unable to delete peer structure when address-family removed",
164ffab2 206 .suggestion = "Determine if all expected peers are removed and restart FRR if not. Most likely a bug"
14454c9f
DS
207 },
208 {
209 .code = BGP_ERR_TABLE_CHUNK,
210 .title = "BGP failed to get table chunk memory",
211 .description = "BGP unable to get chunk memory for table manager",
164ffab2 212 .suggestion = "Ensure there is adequate memory on the device to support the table requirements"
14454c9f
DS
213 },
214 {
215 .code = BGP_ERR_MACIP_LEN,
216 .title = "BGP received MACIP with invalid IP addr len",
217 .description = "BGP received MACIP with invalid IP addr len from Zebra",
218 .suggestion = "Verify MACIP entries inserted in Zebra are correct. Most likely a bug"
219 },
220 {
221 .code = BGP_ERR_LM_ERROR,
222 .title = "BGP received invalid label manager message",
5e1e0166 223 .description = "BGP received invalid label manager message from label manager",
164ffab2 224 .suggestion = "Label manager sent invalid essage to BGP for wrong protocol, instance, etc. Most likely a bug"
14454c9f
DS
225 },
226 {
227 .code = BGP_ERR_JSON_MEM_ERROR,
228 .title = "BGP unable to allocate memory for JSON output",
164ffab2 229 .description = "BGP attempted to generate JSON output and was unable to allocate the memory required",
14454c9f
DS
230 .suggestion = "Ensure that the device has adequate memory to suport the required functions"
231 },
232 {
233 .code = BGP_ERR_UPDGRP_ATTR_LEN,
234 .title = "BGP update had attributes too long to send",
235 .description = "BGP attempted to send an update but the attributes were too long to fit",
236 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
237 },
238 {
239 .code = BGP_ERR_UPDGRP_CREATE,
240 .title = "BGP update group creation failed",
241 .description = "BGP attempted to create an update group but was unable to",
242 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
243 },
244 {
245 .code = BGP_ERR_UPDATE_SND,
246 .title = "BGP error creating update packet",
247 .description = "BGP attempted to create an update packet but was unable to",
248 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
249 },
250 {
251 .code = BGP_ERR_PKT_OPEN,
252 .title = "BGP error receiving open packet",
253 .description = "BGP received an open from a peer that was invalid",
254 .suggestion = "Determine the sending peer and correct his invalid open packet"
255 },
14454c9f
DS
256 {
257 .code = BGP_ERR_SND_FAIL,
258 .title = "BGP error sending to peer",
259 .description = "BGP attempted to respond to open from a peer and failed",
164ffab2 260 .suggestion = "BGP attempted to respond to an open and could not sene the packet. Check local IP address for source"
14454c9f
DS
261 },
262 {
263 .code = BGP_ERR_INVALID_STATUS,
264 .title = "BGP error receiving from peer",
265 .description = "BGP received an update from a peer but status was incorrect",
266 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
267 },
268 {
269 .code = BGP_ERR_UPDATE_RCV,
270 .title = "BGP error receiving update packet",
271 .description = "BGP received an invalid update packet",
272 .suggestion = "Determine the source of the update and resolve the invalid update being sent"
273 },
274 {
275 .code = BGP_ERR_NO_CAP,
276 .title = "BGP error due to capability not enabled",
277 .description = "BGP attempted a function that did not have the capability enabled",
278 .suggestion = "Enable the capability if this functionality is desired"
279 },
280 {
281 .code = BGP_ERR_NOTIFY_RCV,
282 .title = "BGP error receiving notify message",
283 .description = "BGP unable to process notification message",
164ffab2 284 .suggestion = "BGP notify received while in stopped state. If the problem persists, report for troubleshooting"
14454c9f
DS
285 },
286 {
287 .code = BGP_ERR_KEEP_RCV,
288 .title = "BGP error receiving keepalive packet",
289 .description = "BGP unable to process keepalive packet",
164ffab2 290 .suggestion = "BGP keepalive received while in stopped state. If the problem persists, report for troubleshooting"
14454c9f
DS
291 },
292 {
293 .code = BGP_ERR_RFSH_RCV,
294 .title = "BGP error receiving route refresh message",
295 .description = "BGP unable to process route refresh message",
164ffab2 296 .suggestion = "BGP route refresh received while in stopped state. If the problem persists, report for troubleshooting"},
14454c9f
DS
297 {
298 .code = BGP_ERR_CAP_RCV,
299 .title = "BGP error capability message",
300 .description = "BGP unable to process received capability",
164ffab2 301 .suggestion = "BGP capability message received while in stopped state. If the problem persists, report for troubleshooting"
14454c9f
DS
302 },
303 {
304 .code = BGP_ERR_NH_UPD,
305 .title = "BGP error with nexthopo update",
306 .description = "BGP unable to process nexthop update",
164ffab2 307 .suggestion = "BGP received nexthop update but nexthop is not reachable in this bgp instance. Report for troubleshooting"
14454c9f 308 },
14454c9f
DS
309 {
310 .code = BGP_ERR_LABEL,
311 .title = "Failure to apply label",
312 .description = "BGP attempted to attempted to apply a label but could not",
313 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
314 },
315 {
316 .code = BGP_ERR_MULTIPATH,
317 .title = "Multipath specified is invalid",
318 .description = "BGP was started with an invalid ecmp/multipath value",
319 .suggestion = "Correct the ecmp/multipath value supplied when starting the BGP daemon"
320 },
321 {
322 .code = BGP_ERR_PKT_PROCESS,
323 .title = "Failure to process a packet",
324 .description = "BGP attempted to process a received packet but could not",
325 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
326 },
327 {
328 .code = BGP_ERR_CONNECT,
329 .title = "Failure to connect to peer",
330 .description = "BGP attempted to send open to peer but couldn't connect",
331 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
332 },
333 {
334 .code = BGP_ERR_FSM,
335 .title = "BGP FSM issue",
336 .description = "BGP neighbor transition problem",
337 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
338 },
339 {
340 .code = BGP_ERR_VNI,
def31c13 341 .title = "BGP VNI creation issue",
14454c9f
DS
342 .description = "BGP could not create a new VNI",
343 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
344 },
345 {
346 .code = BGP_ERR_NO_DFLT,
347 .title = "BGP default instance missing",
348 .description = "BGP could not find default instance",
349 .suggestion = "Define a default instance of BGP since some feature requires it's existence"
350 },
351 {
352 .code = BGP_ERR_VTEP_INVALID,
353 .title = "BGP remote VTEP invalid",
354 .description = "BGP remote VTEP is invalid and cannot be used",
355 .suggestion = "Correct remote VTEP configuration or resolve the source of the problem"
356 },
357 {
358 .code = BGP_ERR_ES_INVALID,
359 .title = "BGP ES route error",
360 .description = "BGP ES route incorrect, learned both local and remote",
361 .suggestion = "Correct configuration or addressing so that same not learned both local and remote"
362 },
363 {
364 .code = BGP_ERR_EVPN_ROUTE_DELETE,
365 .title = "BGP EVPN route delete error",
366 .description = "BGP attempted to delete an EVPN route and failed",
367 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
368 },
369 {
370 .code = BGP_ERR_EVPN_FAIL,
371 .title = "BGP EVPN install/uninstall error",
372 .description = "BGP attempted to install or uninstall an EVPN prefix and failed",
373 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
374 },
375 {
376 .code = BGP_ERR_EVPN_ROUTE_INVALID,
377 .title = "BGP EVPN route received with invalid contents",
378 .description = "BGP received an EVPN route with invalid contents",
164ffab2 379 .suggestion = "Determine the source of the EVPN route and resolve whatever is causing invalid contents"
14454c9f
DS
380 },
381 {
382 .code = BGP_ERR_EVPN_ROUTE_CREATE,
383 .title = "BGP EVPN route create error",
384 .description = "BGP attempted to create an EVPN route and failed",
385 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
386 },
387 {
388 .code = BGP_ERR_ES_CREATE,
389 .title = "BGP EVPN ES entry create error",
390 .description = "BGP attempted to create an EVPN ES entry and failed",
391 .suggestion = "Most likely a bug. If the problem persists, report the problem for troubleshooting"
392 },
393 {
394 .code = BGP_ERR_MULTI_INSTANCE,
395 .title = "BGP config multi-instance issue",
396 .description = "BGP configuration attempting multiple instances without enabling the feature",
397 .suggestion = "Correct the configuration so that bgp multiple-instance is enabled if desired"
398 },
399 {
400 .code = BGP_ERR_EVPN_AS_MISMATCH,
401 .title = "BGP AS configuration issue",
402 .description = "BGP configuration attempted for a different AS than currently configured",
403 .suggestion = "Correct the configuration so that the correct BGP AS number is used"
404 },
405 {
406 .code = BGP_ERR_EVPN_INSTANCE_MISMATCH,
407 .title = "BGP EVPN AS and process name mismatch",
408 .description = "BGP configuration has AS and process name mismatch",
164ffab2 409 .suggestion = "Correct the configuration so that the BGP AS number and instance name are consistent"
14454c9f 410 },
4f3be667
DS
411 {
412 .code = BGP_ERR_FLOWSPEC_PACKET,
413 .title = "BGP Flowspec packet processing error",
414 .description = "The BGP flowspec subsystem has detected a error in the send or receive of a packet",
415 .suggestion = "Gather log files from both sides of the peering relationship and open an issue"
416 },
417 {
418 .code = BGP_ERR_FLOWSPEC_INSTALLATION,
419 .title = "BGP Flowspec Installation/removal Error",
420 .description = "The BGP flowspec subsystem has detected that there was a failure for installation/removal/modification of Flowspec from the dataplane",
421 .suggestion = "Gather log files from the router and open an issue, Restart FRR"
422 },
def31c13
DS
423 {
424 .code = END_FERR,
425 }
426};
247dcce2 427/* clang-format on */
14454c9f 428
def31c13 429void bgp_error_init(void)
14454c9f 430{
559aaa30 431 log_ref_add(ferr_bgp_warn);
85cd2f9f 432 log_ref_add(ferr_bgp_err);
63d430ce 433 log_ref_add(ferr_bgp_warn);
14454c9f 434}