Audit changes.

This commit is contained in:
jdl
2026-06-13 15:37:35 +02:00
parent c0126c2036
commit 0709c4dac0
3 changed files with 13 additions and 6 deletions

View File

@@ -26,7 +26,7 @@ func Broadcast(
} }
func broadcastInner(selfVPNIP netip.Addr, pubKey wgtypes.Key, wgPort uint16, signKey *[64]byte) { func broadcastInner(selfVPNIP netip.Addr, pubKey wgtypes.Key, wgPort uint16, signKey *[64]byte) {
conn, err := net.ListenMulticastUDP("udp", nil, addr) conn, err := net.ListenMulticastUDP("udp", nil, multicastAddr(selfVPNIP))
if err != nil { if err != nil {
log.Printf("[MCBroadcast] bind: %v", err) log.Printf("[MCBroadcast] bind: %v", err)
return return

View File

@@ -9,19 +9,19 @@ import (
"time" "time"
) )
func Receiver(vpnNet netip.Prefix, selfVPNIP netip.Addr, ch chan<- Packet) { func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) {
for { for {
if err := receiver(vpnNet, selfVPNIP, ch); err != nil { if err := receiver(selfVPNIP, ch); err != nil {
log.Printf("[MCReader] %v", err) log.Printf("[MCReader] %v", err)
} }
time.Sleep(errorTimeout) time.Sleep(errorTimeout)
} }
} }
func receiver(vpnNet netip.Prefix, selfVPNIP netip.Addr, ch chan<- Packet) error { func receiver(selfVPNIP netip.Addr, ch chan<- Packet) error {
selfIP := selfVPNIP.As4()[3] selfIP := selfVPNIP.As4()[3]
conn, err := net.ListenMulticastUDP("udp", nil, addr) conn, err := net.ListenMulticastUDP("udp", nil, multicastAddr(selfVPNIP))
if err != nil { if err != nil {
return fmt.Errorf("bind: %w", err) return fmt.Errorf("bind: %w", err)
} }
@@ -59,3 +59,10 @@ func receiver(vpnNet netip.Prefix, selfVPNIP netip.Addr, ch chan<- Packet) error
ch <- packet ch <- packet
} }
} }
func multicastAddr(vpnIP netip.Addr) *net.UDPAddr {
b := vpnIP.As4()
return net.UDPAddrFromAddrPort(
netip.AddrPortFrom(
netip.AddrFrom4([4]byte{239, b[1], b[2], 0}), 4560))
}

View File

@@ -81,7 +81,7 @@ func New(
if !state.IsPublic { if !state.IsPublic {
go multicast.Broadcast(state.VPNIP, state.PrivKey.PublicKey(), state.WGPort, &state.SignKey) go multicast.Broadcast(state.VPNIP, state.PrivKey.PublicKey(), state.WGPort, &state.SignKey)
go multicast.Receiver(state.VPNNet, state.VPNIP, multicastCh) go multicast.Receiver(state.VPNIP, multicastCh)
} }
return &App{ return &App{