]> git.puffer.fish Git - mirror/frr.git/commit
bgpd: Don't stop hold timer in OpenConfirm State
authorSarita Patra <saritap@vmware.com>
Fri, 21 Aug 2020 06:29:08 +0000 (23:29 -0700)
committerSarita Patra <saritap@vmware.com>
Fri, 21 Aug 2020 06:35:47 +0000 (23:35 -0700)
commit4533dc6a4e3d04115fb8de1967261938237898ab
tree88ac29a13385ff95b3d23f77da2f524036ff1d3e
parent92b4f625d53df3b29a8b5075029b031cc4016e8b
bgpd: Don't stop hold timer in OpenConfirm State

Issue:

1. Initially BGP start listening to socket.
2. Start timer expires and BGP tries to connect to peer and moved
   to Idle->connect (lets say peer datastructre X)
3. Peer datastrcture Y FD-X receives OPEN and moved from Opensent->
   Openconfirm state and start the hold timer.
4. In the OpenConfirm state, the hold timer is stopped. So peer X
   waits for Keepalive message from peer. If the Keepalive message
   is not received, then it will be in OpenConfirm state for
   indefinite time.
5. Due to this it neither close the existing connection nor it will
   accept any connection from peer.

Fix:
In the OpenConfirm state, don't stop the hold timer.
 1. Upon receipt of a neighbor’s Keepalive, the state is moved to
    Established.
 2. But If the hold timer expires, a stop event occurs, the state
    is moved to Idle.
This is as per RFC.

Signed-off-by: Sarita Patra <saritap@vmware.com>
bgpd/bgp_fsm.c