bgpd: Use bgp instance's default keepalive interval if < (holdtime/3)

bgp->default_keepalive was not considered when setting
peer->v_keepalive, causing the effective keepalive interval to
always be (holdtime/3), even when default_keepalive < (holdtime/3).
This ensures that the default_keepalive is used when it's set and
is < (holdtime/3).

Signed-off-by: Trey Aspelund <taspelund@cumulusnetworks.com>
(cherry picked from commit d8bf8c6128f2e493d473148213bd663a500c7f73)
This commit is contained in:
Trey Aspelund 2020-09-23 14:16:50 -04:00 committed by Donatas Abraitis
parent 0dd8f34328
commit b3382a4c64

View File

@ -1322,11 +1322,18 @@ static int bgp_open_receive(struct peer *peer, bgp_size_t size)
else else
peer->v_holdtime = send_holdtime; peer->v_holdtime = send_holdtime;
if ((CHECK_FLAG(peer->flags, PEER_FLAG_TIMER)) /* Set effective keepalive to 1/3 the effective holdtime.
&& (peer->keepalive < peer->v_holdtime / 3)) * Use configured keeplive when < effective keepalive.
peer->v_keepalive = peer->keepalive; */
else peer->v_keepalive = peer->v_holdtime / 3;
peer->v_keepalive = peer->v_holdtime / 3; if (CHECK_FLAG(peer->flags, PEER_FLAG_TIMER)) {
if (peer->keepalive && peer->keepalive < peer->v_keepalive)
peer->v_keepalive = peer->keepalive;
} else {
if (peer->bgp->default_keepalive
&& peer->bgp->default_keepalive < peer->v_keepalive)
peer->v_keepalive = peer->bgp->default_keepalive;
}
/* Open option part parse. */ /* Open option part parse. */
if (optlen != 0) { if (optlen != 0) {