vppn/node/globals.go
2025-01-22 14:09:43 +01:00

64 lines
1.3 KiB
Go

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