vppn/peer/statedata.go
2025-02-25 02:43:29 +01:00

29 lines
558 B
Go

package peer
import (
"net/netip"
"vppn/m"
)
type peerData = pState
func initPeerState(data *peerData, peer *m.Peer) peerState {
data.peer = peer
if peer == nil {
return enterStateDisconnected2(data)
}
if _, isValid := netip.AddrFromSlice(peer.PublicIP); isValid {
if data.localAddr.IsValid() && data.localIP < data.remoteIP {
return enterStateServer2(data)
}
return enterStateClientInit2(data)
}
if data.localAddr.IsValid() || data.localIP < data.remoteIP {
return enterStateServer2(data)
}
return enterStateClientInit2(data)
}