Merge pull request #5836 from donaldsharp/bgp_collision

bgpd: Add a better breadcrumb for when bgp is missconfiged
This commit is contained in:
Donatas Abraitis 2020-02-19 20:51:02 +01:00 committed by GitHub
commit 7088718b71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 0 deletions

View File

@ -456,6 +456,12 @@ static struct log_ref ferr_bgp_err[] = {
.description = "As part of BGP startup, the peer and ourselves can start connections to each other at the same time. During this process BGP received additional configuration, but it was only applied to one of the two nascent connections. Depending on the result of collision detection and resolution this configuration might be lost. To remedy this, after performing collision detection and resolution the peer session has been reset in order to apply the new configuration.",
.suggestion = "Gather data and open a Issue so that this developmental escape can be fixed, the peer should have been reset",
},
{
.code = EC_BGP_ROUTER_ID_SAME,
.title = "BGP has detected a duplicate router id during collision resolution",
.description = "As part of normal collision detection for opening a connection to a peer, BGP has detected that the remote peer's router-id is the same as ours",
.suggestion = "Change one of the two router-id's",
},
{
.code = END_FERR,
}

View File

@ -98,6 +98,7 @@ enum bgp_log_refs {
EC_BGP_CAPABILITY_UNKNOWN,
EC_BGP_INVALID_NEXTHOP_LENGTH,
EC_BGP_DOPPELGANGER_CONFIG,
EC_BGP_ROUTER_ID_SAME,
};
extern void bgp_error_init(void);

View File

@ -1007,6 +1007,11 @@ static int bgp_collision_detect(struct peer *new, struct in_addr remote_id)
return -1;
}
else {
if (ntohl(peer->local_id.s_addr) ==
ntohl(remote_id.s_addr))
flog_err(EC_BGP_ROUTER_ID_SAME, "Peer's router-id %s is the same as ours",
inet_ntoa(remote_id));
/* 3. Otherwise, the local system closes newly
created
BGP connection (the one associated with the