mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 10:37:29 +00:00
Merge pull request #12069 from opensourcerouting/fix/local-as_reset
bgpd: Reuse flag action for reseting session for `neighbor PEER local-as`
This commit is contained in:
commit
96a499d027
26
bgpd/bgpd.c
26
bgpd/bgpd.c
@ -4272,9 +4272,9 @@ static const struct peer_flag_action peer_flag_action_list[] = {
|
|||||||
{PEER_FLAG_TIMER_CONNECT, 0, peer_change_none},
|
{PEER_FLAG_TIMER_CONNECT, 0, peer_change_none},
|
||||||
{PEER_FLAG_TIMER_DELAYOPEN, 0, peer_change_none},
|
{PEER_FLAG_TIMER_DELAYOPEN, 0, peer_change_none},
|
||||||
{PEER_FLAG_PASSWORD, 0, peer_change_none},
|
{PEER_FLAG_PASSWORD, 0, peer_change_none},
|
||||||
{PEER_FLAG_LOCAL_AS, 0, peer_change_none},
|
{PEER_FLAG_LOCAL_AS, 0, peer_change_reset},
|
||||||
{PEER_FLAG_LOCAL_AS_NO_PREPEND, 0, peer_change_none},
|
{PEER_FLAG_LOCAL_AS_NO_PREPEND, 0, peer_change_reset},
|
||||||
{PEER_FLAG_LOCAL_AS_REPLACE_AS, 0, peer_change_none},
|
{PEER_FLAG_LOCAL_AS_REPLACE_AS, 0, peer_change_reset},
|
||||||
{PEER_FLAG_UPDATE_SOURCE, 0, peer_change_none},
|
{PEER_FLAG_UPDATE_SOURCE, 0, peer_change_none},
|
||||||
{PEER_FLAG_DISABLE_LINK_BW_ENCODING_IEEE, 0, peer_change_none},
|
{PEER_FLAG_DISABLE_LINK_BW_ENCODING_IEEE, 0, peer_change_none},
|
||||||
{PEER_FLAG_EXTENDED_OPT_PARAMS, 0, peer_change_reset},
|
{PEER_FLAG_EXTENDED_OPT_PARAMS, 0, peer_change_reset},
|
||||||
@ -6160,18 +6160,8 @@ int peer_local_as_set(struct peer *peer, as_t as, bool no_prepend,
|
|||||||
(void)peer_sort(peer);
|
(void)peer_sort(peer);
|
||||||
|
|
||||||
/* Check if handling a regular peer. */
|
/* Check if handling a regular peer. */
|
||||||
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)) {
|
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
|
||||||
/* Send notification or reset peer depending on state. */
|
|
||||||
if (BGP_IS_VALID_STATE_FOR_NOTIF(peer->status)) {
|
|
||||||
peer->last_reset = PEER_DOWN_LOCAL_AS_CHANGE;
|
|
||||||
bgp_notify_send(peer, BGP_NOTIFY_CEASE,
|
|
||||||
BGP_NOTIFY_CEASE_CONFIG_CHANGE);
|
|
||||||
} else
|
|
||||||
bgp_session_reset(peer);
|
|
||||||
|
|
||||||
/* Skip peer-group mechanics for regular peers. */
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set flag and configuration on all peer-group members, unless they are
|
* Set flag and configuration on all peer-group members, unless they are
|
||||||
@ -6200,14 +6190,6 @@ int peer_local_as_set(struct peer *peer, as_t as, bool no_prepend,
|
|||||||
COND_FLAG(member->flags, PEER_FLAG_LOCAL_AS_REPLACE_AS,
|
COND_FLAG(member->flags, PEER_FLAG_LOCAL_AS_REPLACE_AS,
|
||||||
replace_as);
|
replace_as);
|
||||||
member->change_local_as = as;
|
member->change_local_as = as;
|
||||||
|
|
||||||
/* Send notification or stop peer depending on state. */
|
|
||||||
if (BGP_IS_VALID_STATE_FOR_NOTIF(member->status)) {
|
|
||||||
member->last_reset = PEER_DOWN_LOCAL_AS_CHANGE;
|
|
||||||
bgp_notify_send(member, BGP_NOTIFY_CEASE,
|
|
||||||
BGP_NOTIFY_CEASE_CONFIG_CHANGE);
|
|
||||||
} else
|
|
||||||
BGP_EVENT_ADD(member, BGP_Stop);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user