mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-20 04:55:08 +00:00
Merge pull request #8067 from qlyoung/fix-bmp-incorrect-peer-down-message
bgpd: send correct BMP down message when nht fails
This commit is contained in:
commit
b10e30232e
@ -434,10 +434,19 @@ static struct stream *bmp_peerstate(struct peer *peer, bool down)
|
||||
case PEER_DOWN_CLOSE_SESSION:
|
||||
type = BMP_PEERDOWN_REMOTE_CLOSE;
|
||||
break;
|
||||
case PEER_DOWN_WAITING_NHT:
|
||||
type = BMP_PEERDOWN_LOCAL_FSM;
|
||||
stream_putw(s, BGP_FSM_TcpConnectionFails);
|
||||
break;
|
||||
/*
|
||||
* TODO: Map remaining PEER_DOWN_* reasons to RFC event codes.
|
||||
* TODO: Implement BMP_PEERDOWN_LOCAL_NOTIFY.
|
||||
*
|
||||
* See RFC7854 ss. 4.9
|
||||
*/
|
||||
default:
|
||||
type = BMP_PEERDOWN_LOCAL_NOTIFY;
|
||||
stream_put(s, peer->last_reset_cause,
|
||||
peer->last_reset_cause_size);
|
||||
type = BMP_PEERDOWN_LOCAL_FSM;
|
||||
stream_putw(s, BMP_PEER_DOWN_NO_RELEVANT_EVENT_CODE);
|
||||
break;
|
||||
}
|
||||
stream_putc_at(s, type_pos, type);
|
||||
|
@ -269,6 +269,8 @@ struct bmp_bgp_peer {
|
||||
/* per struct bgp * data */
|
||||
PREDECL_HASH(bmp_bgph)
|
||||
|
||||
#define BMP_PEER_DOWN_NO_RELEVANT_EVENT_CODE 0x00
|
||||
|
||||
struct bmp_bgp {
|
||||
struct bmp_bgph_item bbi;
|
||||
|
||||
|
42
bgpd/bgpd.h
42
bgpd/bgpd.h
@ -921,7 +921,47 @@ struct bgp_peer_gr {
|
||||
bgp_peer_gr_action_ptr action_fun;
|
||||
};
|
||||
|
||||
/* BGP finite state machine events. */
|
||||
/*
|
||||
* BGP FSM event codes, per RFC 4271 ss. 8.1
|
||||
*/
|
||||
enum bgp_fsm_rfc_codes {
|
||||
BGP_FSM_ManualStart = 1,
|
||||
BGP_FSM_ManualStop = 2,
|
||||
BGP_FSM_AutomaticStart = 3,
|
||||
BGP_FSM_ManualStart_with_PassiveTcpEstablishment = 4,
|
||||
BGP_FSM_AutomaticStart_with_PassiveTcpEstablishment = 5,
|
||||
BGP_FSM_AutomaticStart_with_DampPeerOscillations = 6,
|
||||
BGP_FSM_AutomaticStart_with_DampPeerOscillations_and_PassiveTcpEstablishment =
|
||||
7,
|
||||
BGP_FSM_AutomaticStop = 8,
|
||||
BGP_FSM_ConnectRetryTimer_Expires = 9,
|
||||
BGP_FSM_HoldTimer_Expires = 10,
|
||||
BGP_FSM_KeepaliveTimer_Expires = 11,
|
||||
BGP_FSM_DelayOpenTimer_Expires = 12,
|
||||
BGP_FSM_IdleHoldTimer_Expires = 13,
|
||||
BGP_FSM_TcpConnection_Valid = 14,
|
||||
BGP_FSM_Tcp_CR_Invalid = 15,
|
||||
BGP_FSM_Tcp_CR_Acked = 16,
|
||||
BGP_FSM_TcpConnectionConfirmed = 17,
|
||||
BGP_FSM_TcpConnectionFails = 18,
|
||||
BGP_FSM_BGPOpen = 19,
|
||||
BGP_FSM_BGPOpen_with_DelayOpenTimer_running = 20,
|
||||
BGP_FSM_BGPHeaderErr = 21,
|
||||
BGP_FSM_BGPOpenMsgErr = 22,
|
||||
BGP_FSM_OpenCollisionDump = 23,
|
||||
BGP_FSM_NotifMsgVerErr = 24,
|
||||
BGP_FSM_NotifMsg = 25,
|
||||
BGP_FSM_KeepAliveMsg = 26,
|
||||
BGP_FSM_UpdateMsg = 27,
|
||||
BGP_FSM_UpdateMsgErr = 28
|
||||
};
|
||||
|
||||
/*
|
||||
* BGP finite state machine events
|
||||
*
|
||||
* Note: these do not correspond to RFC-defined event codes. Those are
|
||||
* defined elsewhere.
|
||||
*/
|
||||
enum bgp_fsm_events {
|
||||
BGP_Start = 1,
|
||||
BGP_Stop,
|
||||
|
Loading…
Reference in New Issue
Block a user