From 0709c4dac0017886b9854829b681b7be2d4046d0 Mon Sep 17 00:00:00 2001 From: jdl Date: Sat, 13 Jun 2026 15:37:35 +0200 Subject: [PATCH] Audit changes. --- peer/multicast/broadcaster.go | 2 +- peer/multicast/receiver.go | 15 +++++++++++---- peer/new.go | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/peer/multicast/broadcaster.go b/peer/multicast/broadcaster.go index 3acfa2d..4abce0c 100644 --- a/peer/multicast/broadcaster.go +++ b/peer/multicast/broadcaster.go @@ -26,7 +26,7 @@ func Broadcast( } 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 { log.Printf("[MCBroadcast] bind: %v", err) return diff --git a/peer/multicast/receiver.go b/peer/multicast/receiver.go index 4dcdf69..91c032c 100644 --- a/peer/multicast/receiver.go +++ b/peer/multicast/receiver.go @@ -9,19 +9,19 @@ import ( "time" ) -func Receiver(vpnNet netip.Prefix, selfVPNIP netip.Addr, ch chan<- Packet) { +func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) { for { - if err := receiver(vpnNet, selfVPNIP, ch); err != nil { + if err := receiver(selfVPNIP, ch); err != nil { log.Printf("[MCReader] %v", err) } 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] - conn, err := net.ListenMulticastUDP("udp", nil, addr) + conn, err := net.ListenMulticastUDP("udp", nil, multicastAddr(selfVPNIP)) if err != nil { return fmt.Errorf("bind: %w", err) } @@ -59,3 +59,10 @@ func receiver(vpnNet netip.Prefix, selfVPNIP netip.Addr, ch chan<- Packet) error 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)) +} diff --git a/peer/new.go b/peer/new.go index ff75168..3c008bb 100644 --- a/peer/new.go +++ b/peer/new.go @@ -81,7 +81,7 @@ func New( if !state.IsPublic { 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{