From c34adc472c711358feccd760520fdb3602b2c1ff Mon Sep 17 00:00:00 2001 From: Kleissner Date: Mon, 1 Mar 2021 04:13:18 +0100 Subject: [PATCH] Prevent link-local to non-link-local connections for multicast and broadcast. --- Network IPv4 Broadcast.go | 5 +++++ Network IPv6 Multicast.go | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Network IPv4 Broadcast.go b/Network IPv4 Broadcast.go index bc48d54..946a1da 100644 --- a/Network IPv4 Broadcast.go +++ b/Network IPv4 Broadcast.go @@ -71,6 +71,11 @@ func (network *Network) BroadcastIPv4Listen() { continue } + // For good network practice (and reducing amount of parallel connections), do not allow link-local to talk to non-link-local addresses. + if sender.(*net.UDPAddr).IP.IsLinkLocalUnicast() != network.address.IP.IsLinkLocalUnicast() { + continue + } + //fmt.Printf("BroadcastIPv4Listen from %s at network %s\n", sender.String(), network.address.String()) if length < packetLengthMin { diff --git a/Network IPv6 Multicast.go b/Network IPv6 Multicast.go index eeae8e9..1437f37 100644 --- a/Network IPv6 Multicast.go +++ b/Network IPv6 Multicast.go @@ -117,6 +117,11 @@ func (network *Network) MulticastIPv6Listen() { continue } + // For good network practice (and reducing amount of parallel connections), do not allow link-local to talk to non-link-local addresses. + if sender.(*net.UDPAddr).IP.IsLinkLocalUnicast() != network.address.IP.IsLinkLocalUnicast() { + continue + } + //fmt.Printf("MulticastIPv6Listen from %s at network %s\n", sender.String(), network.address.String()) if length < packetLengthMin {