Skip to content

Commit 1cb4905

Browse files
committed
server/fsm: Move transport state updates to stateChange function
The states are updated at many places. Move the code to update the states of the TCP connection to stateChange(). Signed-off-by: FUJITA Tomonori <[email protected]>
1 parent 451ff12 commit 1cb4905

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

pkg/server/fsm.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,19 @@ func (fsm *fsm) stateChange(nextState bgp.FSMState, reason *fsmStateReason) {
344344
fsm.state.Store(nextState)
345345
switch nextState {
346346
case bgp.BGP_FSM_ESTABLISHED:
347+
remoteTCP := fsm.conn.RemoteAddr().(*net.TCPAddr)
348+
remoteAddr, _ := netip.AddrFromSlice(remoteTCP.IP)
349+
remoteAddr = remoteAddr.WithZone("")
350+
351+
localTCP := fsm.conn.LocalAddr().(*net.TCPAddr)
352+
localAddr, _ := netip.AddrFromSlice(localTCP.IP)
353+
localAddr = localAddr.WithZone("")
354+
355+
fsm.pConf.Transport.State.RemoteAddress = remoteAddr
356+
fsm.pConf.Transport.State.RemotePort = uint16(remoteTCP.Port)
357+
fsm.pConf.Transport.State.LocalAddress = localAddr
358+
fsm.pConf.Transport.State.LocalPort = uint16(localTCP.Port)
359+
347360
fsm.pConf.Timers.State.Uptime = time.Now().Unix()
348361
fsm.pConf.State.EstablishedCount++
349362

@@ -593,23 +606,11 @@ func (h *fsmHandler) active(ctx context.Context) (bgp.FSMState, *fsmStateReason)
593606
break
594607
}
595608

596-
remoteTCP := conn.RemoteAddr().(*net.TCPAddr)
597-
remoteAddr, _ := netip.AddrFromSlice(remoteTCP.IP)
598-
remoteAddr = remoteAddr.WithZone("")
599-
600-
localTCP := conn.LocalAddr().(*net.TCPAddr)
601-
localAddr, _ := netip.AddrFromSlice(localTCP.IP)
602-
localAddr = localAddr.WithZone("")
603-
604609
fsm.conn = conn
605610
// set a deadline for sending OPEN and KEEPALIVE messages before established state.
606611
conn.SetWriteDeadline(time.Now().Add(time.Second))
607612

608613
fsm.lock.Lock()
609-
h.fsm.pConf.Transport.State.RemoteAddress = remoteAddr
610-
h.fsm.pConf.Transport.State.RemotePort = uint16(remoteTCP.Port)
611-
h.fsm.pConf.Transport.State.LocalAddress = localAddr
612-
h.fsm.pConf.Transport.State.LocalPort = uint16(localTCP.Port)
613614

614615
if err := setPeerConnTTL(fsm); err != nil {
615616
fsm.logger.Warn("cannot set TTL",

0 commit comments

Comments
 (0)