diff --git a/internal/radvd/radvd.go b/internal/radvd/radvd.go index df3257d..368a9ce 100644 --- a/internal/radvd/radvd.go +++ b/internal/radvd/radvd.go @@ -19,6 +19,7 @@ import ( "log" "net" "net/netip" + "strings" "sync" "time" @@ -93,6 +94,10 @@ func (s *Server) Serve(ifname string, conn net.PacketConn) error { if err != nil { return err } + if !strings.HasSuffix(addr.String(), "%"+ifname) { + log.Printf("ignoring off-interface request from %v", addr) + continue + } // TODO: isn’t this guaranteed by the filter above? if n == 0 || ipv6.ICMPType(buf[0]) != ipv6.ICMPTypeRouterSolicitation {