42 lines
875 B
Go
42 lines
875 B
Go
//go:build ignore
|
|
|
|
package peer
|
|
|
|
import (
|
|
"net"
|
|
"net/netip"
|
|
"time"
|
|
|
|
"golang.zx2c4.com/wireguard/wgctrl"
|
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
)
|
|
|
|
const (
|
|
broadcastInterval = 16 * time.Second
|
|
broadcastErrorTimeoutInterval = 8 * time.Second
|
|
)
|
|
|
|
var multicastAddr = net.UDPAddrFromAddrPort(netip.AddrPortFrom(
|
|
netip.AddrFrom4([4]byte{224, 0, 0, 157}),
|
|
4560))
|
|
|
|
type Globals struct {
|
|
LocalConfig // Embed, immutable.
|
|
|
|
// WireGuard private key, client, and device name. Immutable after init.
|
|
WGPrivKey wgtypes.Key
|
|
WGClient *wgctrl.Client
|
|
WGDevName string
|
|
|
|
// Local public address (if available). Immutable.
|
|
LocalAddr netip.AddrPort
|
|
LocalAddrValid bool
|
|
}
|
|
|
|
func NewGlobals(localConfig LocalConfig, localAddr netip.AddrPort) (g Globals) {
|
|
g.LocalConfig = localConfig
|
|
g.LocalAddr = localAddr
|
|
g.LocalAddrValid = localAddr.IsValid()
|
|
return g
|
|
}
|