Skip to content

Commit

Permalink
bgpd: config connect timer is not applied immediately for peers in no…
Browse files Browse the repository at this point in the history
…n-established state.

Description:
When user is config connect timer, it doesn't reflect
immediately. It reflect when next time neighbor is tried to reconnect.

Problem Description/Summary :
When user is config connect timer, it doesn't reflect
The network connection was aborted by the local system.d to reconnect.
Fix is to update the connect timer immediately if BGP
    session is not in establish state.

Expected Behavior :
If neighbor is not yet established, we should immediately apply the config connect timer to the peer.

Signed-off-by: sudhanshukumar22 <sudhanshu.kumar@broadcom.com>
  • Loading branch information
sudhanshukumar22 committed Jan 25, 2021
1 parent 4912dea commit 29011c3
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions bgpd/bgpd.c
Original file line number Diff line number Diff line change
Expand Up @@ -5304,6 +5304,13 @@ int peer_timers_connect_set(struct peer *peer, uint32_t connect)
peer->connect = connect;
peer->v_connect = connect;

if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)
&& (peer->status != Established)) {
if (peer_active(peer))
BGP_EVENT_ADD(peer, BGP_Stop);
BGP_EVENT_ADD(peer, BGP_Start);
}

/* Skip peer-group mechanics for regular peers. */
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
return 0;
Expand All @@ -5321,6 +5328,12 @@ int peer_timers_connect_set(struct peer *peer, uint32_t connect)
SET_FLAG(member->flags, PEER_FLAG_TIMER_CONNECT);
member->connect = connect;
member->v_connect = connect;

if (member->status != Established) {
if (peer_active(member))
BGP_EVENT_ADD(member, BGP_Stop);
BGP_EVENT_ADD(member, BGP_Start);
}
}

return 0;
Expand All @@ -5347,6 +5360,13 @@ int peer_timers_connect_unset(struct peer *peer)
else
peer->v_connect = peer->bgp->default_connect_retry;

if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)
&& (peer->status != Established)) {
if (peer_active(peer))
BGP_EVENT_ADD(peer, BGP_Stop);
BGP_EVENT_ADD(peer, BGP_Start);
}

/* Skip peer-group mechanics for regular peers. */
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
return 0;
Expand All @@ -5364,6 +5384,12 @@ int peer_timers_connect_unset(struct peer *peer)
UNSET_FLAG(member->flags, PEER_FLAG_TIMER_CONNECT);
member->connect = 0;
member->v_connect = peer->bgp->default_connect_retry;

if (member->status != Established) {
if (peer_active(member))
BGP_EVENT_ADD(member, BGP_Stop);
BGP_EVENT_ADD(member, BGP_Start);
}
}

return 0;
Expand Down

0 comments on commit 29011c3

Please sign in to comment.