mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-30 20:47:58 +00:00
Merge pull request #5789 from donaldsharp/bgp_ebgp_reason
bgpd: Update failed reason to distinguish some NHT scenarios
This commit is contained in:
commit
724935d5a2
@ -576,7 +576,9 @@ const char *const peer_down_str[] = {"",
|
|||||||
"Waiting for NHT",
|
"Waiting for NHT",
|
||||||
"Waiting for Peer IPv6 LLA",
|
"Waiting for Peer IPv6 LLA",
|
||||||
"Waiting for VRF to be initialized",
|
"Waiting for VRF to be initialized",
|
||||||
"No AFI/SAFI activated for peer"};
|
"No AFI/SAFI activated for peer",
|
||||||
|
"AS Set config change",
|
||||||
|
"Waiting for peer OPEN"};
|
||||||
|
|
||||||
static int bgp_graceful_restart_timer_expire(struct thread *thread)
|
static int bgp_graceful_restart_timer_expire(struct thread *thread)
|
||||||
{
|
{
|
||||||
|
@ -789,13 +789,22 @@ static void evaluate_paths(struct bgp_nexthop_cache *bnc)
|
|||||||
bgp_process(bgp_path, rn, afi, safi);
|
bgp_process(bgp_path, rn, afi, safi);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer && !CHECK_FLAG(bnc->flags, BGP_NEXTHOP_PEER_NOTIFIED)) {
|
if (peer) {
|
||||||
if (BGP_DEBUG(nht, NHT))
|
int valid_nexthops = bgp_isvalid_nexthop(bnc);
|
||||||
zlog_debug("%s: Updating peer (%s(%s)) status with NHT",
|
|
||||||
__FUNCTION__, peer->host,
|
if (valid_nexthops)
|
||||||
peer->bgp->name_pretty);
|
peer->last_reset = PEER_DOWN_WAITING_OPEN;
|
||||||
bgp_fsm_event_update(peer, bgp_isvalid_nexthop(bnc));
|
else
|
||||||
SET_FLAG(bnc->flags, BGP_NEXTHOP_PEER_NOTIFIED);
|
peer->last_reset = PEER_DOWN_WAITING_NHT;
|
||||||
|
|
||||||
|
if (!CHECK_FLAG(bnc->flags, BGP_NEXTHOP_PEER_NOTIFIED)) {
|
||||||
|
if (BGP_DEBUG(nht, NHT))
|
||||||
|
zlog_debug("%s: Updating peer (%s(%s)) status with NHT",
|
||||||
|
__FUNCTION__, peer->host,
|
||||||
|
peer->bgp->name_pretty);
|
||||||
|
bgp_fsm_event_update(peer, valid_nexthops);
|
||||||
|
SET_FLAG(bnc->flags, BGP_NEXTHOP_PEER_NOTIFIED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RESET_FLAG(bnc->change_flags);
|
RESET_FLAG(bnc->change_flags);
|
||||||
|
12
bgpd/bgpd.h
12
bgpd/bgpd.h
@ -1321,10 +1321,10 @@ struct peer {
|
|||||||
#define PEER_DOWN_REMOTE_AS_CHANGE 2 /* neighbor remote-as command */
|
#define PEER_DOWN_REMOTE_AS_CHANGE 2 /* neighbor remote-as command */
|
||||||
#define PEER_DOWN_LOCAL_AS_CHANGE 3 /* neighbor local-as command */
|
#define PEER_DOWN_LOCAL_AS_CHANGE 3 /* neighbor local-as command */
|
||||||
#define PEER_DOWN_CLID_CHANGE 4 /* bgp cluster-id command */
|
#define PEER_DOWN_CLID_CHANGE 4 /* bgp cluster-id command */
|
||||||
#define PEER_DOWN_CONFED_ID_CHANGE 5 /* bgp confederation identifier command */
|
#define PEER_DOWN_CONFED_ID_CHANGE 5 /* bgp confederation id command */
|
||||||
#define PEER_DOWN_CONFED_PEER_CHANGE 6 /* bgp confederation peer command */
|
#define PEER_DOWN_CONFED_PEER_CHANGE 6 /* bgp confederation peer command */
|
||||||
#define PEER_DOWN_RR_CLIENT_CHANGE 7 /* neighbor route-reflector-client command */
|
#define PEER_DOWN_RR_CLIENT_CHANGE 7 /* neighbor rr-client command */
|
||||||
#define PEER_DOWN_RS_CLIENT_CHANGE 8 /* neighbor route-server-client command */
|
#define PEER_DOWN_RS_CLIENT_CHANGE 8 /* neighbor rs-client command */
|
||||||
#define PEER_DOWN_UPDATE_SOURCE_CHANGE 9 /* neighbor update-source command */
|
#define PEER_DOWN_UPDATE_SOURCE_CHANGE 9 /* neighbor update-source command */
|
||||||
#define PEER_DOWN_AF_ACTIVATE 10 /* neighbor activate command */
|
#define PEER_DOWN_AF_ACTIVATE 10 /* neighbor activate command */
|
||||||
#define PEER_DOWN_USER_SHUTDOWN 11 /* neighbor shutdown command */
|
#define PEER_DOWN_USER_SHUTDOWN 11 /* neighbor shutdown command */
|
||||||
@ -1348,6 +1348,12 @@ struct peer {
|
|||||||
#define PEER_DOWN_VRF_UNINIT 29 /* Associated VRF is not init yet */
|
#define PEER_DOWN_VRF_UNINIT 29 /* Associated VRF is not init yet */
|
||||||
#define PEER_DOWN_NOAFI_ACTIVATED 30 /* No AFI/SAFI activated for peer */
|
#define PEER_DOWN_NOAFI_ACTIVATED 30 /* No AFI/SAFI activated for peer */
|
||||||
#define PEER_DOWN_AS_SETS_REJECT 31 /* Reject routes with AS_SET */
|
#define PEER_DOWN_AS_SETS_REJECT 31 /* Reject routes with AS_SET */
|
||||||
|
#define PEER_DOWN_WAITING_OPEN 32 /* Waiting for open to succeed */
|
||||||
|
/*
|
||||||
|
* Remember to update peer_down_str in bgp_fsm.c when you add
|
||||||
|
* a new value to the last_reset reason
|
||||||
|
*/
|
||||||
|
|
||||||
size_t last_reset_cause_size;
|
size_t last_reset_cause_size;
|
||||||
uint8_t last_reset_cause[BGP_MAX_PACKET_SIZE];
|
uint8_t last_reset_cause[BGP_MAX_PACKET_SIZE];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user