mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-17 10:20:27 +00:00
Merge pull request #15458 from opensourcerouting/fix/bgpd_send_hold_timer_expired_notification_code
bgpd: Send "Send Hold Timer Expired" on such events notification
This commit is contained in:
commit
0186c94ce6
@ -116,6 +116,7 @@ static const struct message bgp_notify_msg[] = {
|
|||||||
{BGP_NOTIFY_FSM_ERR, "Neighbor Events Error"},
|
{BGP_NOTIFY_FSM_ERR, "Neighbor Events Error"},
|
||||||
{BGP_NOTIFY_CEASE, "Cease"},
|
{BGP_NOTIFY_CEASE, "Cease"},
|
||||||
{BGP_NOTIFY_ROUTE_REFRESH_ERR, "ROUTE-REFRESH Message Error"},
|
{BGP_NOTIFY_ROUTE_REFRESH_ERR, "ROUTE-REFRESH Message Error"},
|
||||||
|
{BGP_NOTIFY_SEND_HOLD_ERR, "Send Hold Timer Expired"},
|
||||||
{0}};
|
{0}};
|
||||||
|
|
||||||
static const struct message bgp_notify_head_msg[] = {
|
static const struct message bgp_notify_head_msg[] = {
|
||||||
@ -515,6 +516,7 @@ const char *bgp_notify_subcode_str(char code, char subcode)
|
|||||||
return lookup_msg(bgp_notify_update_msg, subcode,
|
return lookup_msg(bgp_notify_update_msg, subcode,
|
||||||
"Unrecognized Error Subcode");
|
"Unrecognized Error Subcode");
|
||||||
case BGP_NOTIFY_HOLD_ERR:
|
case BGP_NOTIFY_HOLD_ERR:
|
||||||
|
case BGP_NOTIFY_SEND_HOLD_ERR:
|
||||||
break;
|
break;
|
||||||
case BGP_NOTIFY_FSM_ERR:
|
case BGP_NOTIFY_FSM_ERR:
|
||||||
return lookup_msg(bgp_notify_fsm_msg, subcode,
|
return lookup_msg(bgp_notify_fsm_msg, subcode,
|
||||||
|
@ -1589,7 +1589,7 @@ bgp_stop_with_error(struct peer_connection *connection)
|
|||||||
|
|
||||||
|
|
||||||
/* something went wrong, send notify and tear down */
|
/* something went wrong, send notify and tear down */
|
||||||
static enum bgp_fsm_state_progress
|
enum bgp_fsm_state_progress
|
||||||
bgp_stop_with_notify(struct peer_connection *connection, uint8_t code,
|
bgp_stop_with_notify(struct peer_connection *connection, uint8_t code,
|
||||||
uint8_t sub_code)
|
uint8_t sub_code)
|
||||||
{
|
{
|
||||||
|
@ -122,6 +122,9 @@ extern void bgp_maxmed_update(struct bgp *);
|
|||||||
extern bool bgp_maxmed_onstartup_configured(struct bgp *);
|
extern bool bgp_maxmed_onstartup_configured(struct bgp *);
|
||||||
extern bool bgp_maxmed_onstartup_active(struct bgp *);
|
extern bool bgp_maxmed_onstartup_active(struct bgp *);
|
||||||
extern int bgp_fsm_error_subcode(int status);
|
extern int bgp_fsm_error_subcode(int status);
|
||||||
|
extern enum bgp_fsm_state_progress
|
||||||
|
bgp_stop_with_notify(struct peer_connection *connection, uint8_t code,
|
||||||
|
uint8_t sub_code);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the route advertisement timer (that honors MRAI) for all the
|
* Start the route advertisement timer (that honors MRAI) for all the
|
||||||
|
@ -148,7 +148,8 @@ static void bgp_packet_add(struct peer_connection *connection,
|
|||||||
EC_BGP_SENDQ_STUCK_PROPER,
|
EC_BGP_SENDQ_STUCK_PROPER,
|
||||||
"%pBP has not made any SendQ progress for 2 holdtimes (%jds), terminating session",
|
"%pBP has not made any SendQ progress for 2 holdtimes (%jds), terminating session",
|
||||||
peer, sendholdtime);
|
peer, sendholdtime);
|
||||||
BGP_EVENT_ADD(connection, TCP_fatal_error);
|
bgp_stop_with_notify(connection,
|
||||||
|
BGP_NOTIFY_SEND_HOLD_ERR, 0);
|
||||||
} else if (delta > (intmax_t)holdtime &&
|
} else if (delta > (intmax_t)holdtime &&
|
||||||
monotime(NULL) - peer->last_sendq_warn > 5) {
|
monotime(NULL) - peer->last_sendq_warn > 5) {
|
||||||
flog_warn(
|
flog_warn(
|
||||||
|
@ -1983,6 +1983,7 @@ struct bgp_nlri {
|
|||||||
#define BGP_NOTIFY_FSM_ERR 5
|
#define BGP_NOTIFY_FSM_ERR 5
|
||||||
#define BGP_NOTIFY_CEASE 6
|
#define BGP_NOTIFY_CEASE 6
|
||||||
#define BGP_NOTIFY_ROUTE_REFRESH_ERR 7
|
#define BGP_NOTIFY_ROUTE_REFRESH_ERR 7
|
||||||
|
#define BGP_NOTIFY_SEND_HOLD_ERR 8
|
||||||
|
|
||||||
/* Subcodes for BGP Finite State Machine Error */
|
/* Subcodes for BGP Finite State Machine Error */
|
||||||
#define BGP_NOTIFY_FSM_ERR_SUBCODE_UNSPECIFIC 0
|
#define BGP_NOTIFY_FSM_ERR_SUBCODE_UNSPECIFIC 0
|
||||||
|
Loading…
Reference in New Issue
Block a user