Skip to content

Commit

Permalink
Merge pull request #7449 from sudhanshukumar22/bgp-update-connect-timer
Browse files Browse the repository at this point in the history
bgpd: config connect timer not applied immediately for non-established peers.
  • Loading branch information
ton31337 authored Feb 3, 2021
2 parents 1190d1b + 91de6fa commit fe7bc99
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions bgpd/bgpd.c
Original file line number Diff line number Diff line change
Expand Up @@ -5305,9 +5305,14 @@ int peer_timers_connect_set(struct peer *peer, uint32_t connect)
peer->v_connect = connect;

/* Skip peer-group mechanics for regular peers. */
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)) {
if (peer->status != Established) {
if (peer_active(peer))
BGP_EVENT_ADD(peer, BGP_Stop);
BGP_EVENT_ADD(peer, BGP_Start);
}
return 0;

}
/*
* Set flag and configuration on all peer-group members, unless they are
* explicitely overriding peer-group configuration.
Expand All @@ -5321,6 +5326,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 Down Expand Up @@ -5348,9 +5359,14 @@ int peer_timers_connect_unset(struct peer *peer)
peer->v_connect = peer->bgp->default_connect_retry;

/* Skip peer-group mechanics for regular peers. */
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)) {
if (peer->status != Established) {
if (peer_active(peer))
BGP_EVENT_ADD(peer, BGP_Stop);
BGP_EVENT_ADD(peer, BGP_Start);
}
return 0;

}
/*
* Remove flag and configuration from all peer-group members, unless
* they are explicitely overriding peer-group configuration.
Expand All @@ -5364,6 +5380,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 fe7bc99

Please sign in to comment.