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) }