package node import ( "net" "net/netip" "net/url" "sync/atomic" ) const ( bufferSize = 1536 if_mtu = 1200 if_queue_len = 2048 controlCipherOverhead = 16 dataCipherOverhead = 16 signOverhead = 64 ) var multicastAddr = net.UDPAddrFromAddrPort(netip.AddrPortFrom( netip.AddrFrom4([4]byte{224, 0, 0, 157}), 4560)) var ( hubURL *url.URL apiKey string // Configuration for this peer. netName string localIP byte localPub bool localAddr netip.AddrPort privKey []byte privSignKey []byte // TODO: Doesn't need to be global. // Duplicate checkers for incoming packets. dupChecks [256]*dupCheck = func() (out [256]*dupCheck) { for i := range out { out[i] = newDupCheck(0) } return }() // TODO: Doesn't need to be global . // Messages for the supervisor. messages = make(chan any, 1024) // TODO: Doesn't need to be global . // Global routing table. routingTable [256]*atomic.Pointer[peerRoute] = func() (out [256]*atomic.Pointer[peerRoute]) { for i := range out { out[i] = &atomic.Pointer[peerRoute]{} out[i].Store(&peerRoute{}) } return }() // Managed by the relayManager. relayIP = &atomic.Pointer[byte]{} // TODO: Only used by supervisor: can make local there. publicAddrs = newPubAddrStore() )