tree 76d8a1e2cfdfa2832a90212514daa7a62aa22c66
parent a04d836427dcea903edf3d6aea3c0978b8ba1300
author Paul Jakma <paul.jakma@hpe.com> 1461157520 +0100
committer Paul Jakma <paul@quagga.net> 1485528811 +0000

bgpd: Send OPEN immediately on inbound connections

* bgpd_fsm.c: (bgp_connect_success) This is the transition function
  called when TCP_connection_open occurs in Connect or Active.  It
  sends OPEN, but only for a !ACCEPT_PEER.  I.e.  only on the local
  bgpd's outbound connection.

  This means OPEN will never be sent on a received connection, until
  OPEN is received on it.  Which means if the remote peer delays
  sending its OPEN on such an inbound connection, the local peer might
  hit a timer (e.g.  connectretry) before then and reset.

  There should be no harm in sending OPEN ASAP on any new connection
  with any conforming implementation, indeed this is supposed to be the
  behaviour.  It should speed up things, decrease the window in which
  collision detection could be hit, and make things more robust.  So do
  so.

* bgp_packet.c: (bgp_open_receive) Update the comment.
  Do not send bgp_open_send on the ACCEPT_PEER connection that has just
  been transferred over, that's now done in bgp_connect_success, as it
  should be.

  The accept peer's output fifo must also be transferred over, to
  ensure the Open gets sent, if not already, and the write thread state
  replicated accordingly.

* bgp_network.c: (bgp_accept) local AS config needs to set, so we can
  send Open early on ACCEPT_PEER connections.

Note: The Cumulus "Fix FSM to handle active/passive connections better"
patch also makes this change, amongst other things.
