diff --git a/main.go b/main.go index d717d0a29eed085cf3bb1228212bd5b62bbe4e32..49d19c0f0f76019ae6f522b5f82e0262b5ec99a9 100644 --- a/main.go +++ b/main.go @@ -38,7 +38,7 @@ func main() { PeerAddress: net.IP([]byte{169, 254, 200, 1}), LocalAddress: net.IP([]byte{169, 254, 200, 0}), ReconnectInterval: time.Second * 15, - HoldTimer: time.Second * 90, + HoldTime: time.Second * 90, KeepAlive: time.Second * 30, Passive: true, RouterID: b.RouterID(), @@ -56,7 +56,7 @@ func main() { PeerAddress: net.IP([]byte{169, 254, 100, 0}), LocalAddress: net.IP([]byte{169, 254, 100, 1}), ReconnectInterval: time.Second * 15, - HoldTimer: time.Second * 90, + HoldTime: time.Second * 90, KeepAlive: time.Second * 30, Passive: true, RouterID: b.RouterID(), diff --git a/protocols/bgp/server/fsm2.go b/protocols/bgp/server/fsm2.go index b365e41c61f42486b0ea00c94c93f0f82c021d02..1bd789b3df2d68a08380a87382c91fa480b6a42d 100644 --- a/protocols/bgp/server/fsm2.go +++ b/protocols/bgp/server/fsm2.go @@ -57,7 +57,6 @@ type FSM2 struct { capAddPathRecv bool local net.IP - //remote net.IP ribsInitialized bool adjRIBIn routingtable.RouteTableClient diff --git a/protocols/bgp/server/fsm_open_sent.go b/protocols/bgp/server/fsm_open_sent.go index 5504a525f3c4d0f6569aed80579eb5b2da29fec7..cf628699e22bd85266bc4f9a77eb07a098e50c2c 100644 --- a/protocols/bgp/server/fsm_open_sent.go +++ b/protocols/bgp/server/fsm_open_sent.go @@ -106,7 +106,9 @@ func (s *openSentState) openMsgReceived(msg *packet.BGPMessage) (state, string) openMsg := msg.Body.(*packet.BGPOpen) s.fsm.neighborID = openMsg.BGPIdentifier stopTimer(s.fsm.connectRetryTimer) - s.fsm.peer.collisionHandling(s.fsm) + if s.fsm.peer.collisionHandling(s.fsm) { + return s.cease() + } err := s.fsm.sendKeepalive() if err != nil { return s.tcpFailure() diff --git a/protocols/bgp/server/server.go b/protocols/bgp/server/server.go index bd1f662b470b7a02220bb14010b85e5aa3835683..fef8b4e419d3b071ee9235620f85a0f0254d83f0 100644 --- a/protocols/bgp/server/server.go +++ b/protocols/bgp/server/server.go @@ -4,6 +4,7 @@ import ( "fmt" "io" "net" + "strings" "github.com/bio-routing/bio-rd/config" "github.com/bio-routing/bio-rd/protocols/bgp/packet" @@ -60,10 +61,7 @@ func (b *BGPServer) Start(c *config.Global) error { func (b *BGPServer) incomingConnectionWorker() { for { - // Disabled. We're active only for now. - /*c := <-b.acceptCh - fmt.Printf("Incoming connection!\n") - fmt.Printf("Connection from: %v\n", c.RemoteAddr()) + c := <-b.acceptCh peerAddr := strings.Split(c.RemoteAddr().String(), ":")[0] if _, ok := b.peers[peerAddr]; !ok { @@ -79,19 +77,16 @@ func (b *BGPServer) incomingConnectionWorker() { }).Info("Incoming TCP connection") log.WithField("Peer", peerAddr).Debug("Sending incoming TCP connection to fsm for peer") - fmt.Printf("Initiating new ActiveFSM due to incoming connection from peer %s\n", peerAddr) fsm := NewActiveFSM2(b.peers[peerAddr]) fsm.state = newActiveState(fsm) fsm.startConnectRetryTimer() - fmt.Printf("Getting lock...\n") b.peers[peerAddr].fsmsMu.Lock() b.peers[peerAddr].fsms = append(b.peers[peerAddr].fsms, fsm) - fmt.Printf("Releasing lock...\n") b.peers[peerAddr].fsmsMu.Unlock() go fsm.run() - fsm.conCh <- c*/ + fsm.conCh <- c } }