From ef7089dc61a751dc99c8be5178e4dd3d99a31501 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 25 Mar 2022 09:09:26 +0100 Subject: [PATCH] radvd: switch to netip package for mdlayher/ndp --- go.mod | 2 +- go.sum | 12 ++++++++++-- internal/radvd/radvd.go | 12 +++++++----- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index b61c795..0f6a2f9 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/krolaw/dhcp4 v0.0.0-20190909130307-a50d88189771 github.com/libdns/cloudflare v0.1.0 github.com/libdns/libdns v0.2.0 - github.com/mdlayher/ndp v0.0.0-20200602162440-17ab9e3e5567 + github.com/mdlayher/ndp v0.10.0 github.com/mdlayher/netlink v1.6.0 // indirect github.com/mdlayher/packet v1.0.0 github.com/miekg/dns v1.1.42 diff --git a/go.sum b/go.sum index 5448d66..61484f2 100644 --- a/go.sum +++ b/go.sum @@ -224,8 +224,16 @@ github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7/go.mod h1:U6ZQob github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43/go.mod h1:+t7E0lkKfbBsebllff1xdTmyJt8lH37niI6kwFk9OTo= github.com/mdlayher/genetlink v1.0.0 h1:OoHN1OdyEIkScEmRgxLEe2M9U8ClMytqA5niynLtfj0= github.com/mdlayher/genetlink v1.0.0/go.mod h1:0rJ0h4itni50A86M2kHcgS85ttZazNt7a8H2a2cw0Gc= -github.com/mdlayher/ndp v0.0.0-20200602162440-17ab9e3e5567 h1:x+xs91ZJ+lr0C6sedWeREvck4uGCt+AA1kKXwsHB6jI= -github.com/mdlayher/ndp v0.0.0-20200602162440-17ab9e3e5567/go.mod h1:32w/5dDZWVSEOxyniAgKK4d7dHTuO6TCxWmUznQe3f8= +github.com/mdlayher/ndp v0.0.0-20210831201139-f982b8766fb5 h1:w1Lne6x7QKrrkAviNvSd0M3NYblM1n76Pv2FsGkNzzI= +github.com/mdlayher/ndp v0.0.0-20210831201139-f982b8766fb5/go.mod h1:32w/5dDZWVSEOxyniAgKK4d7dHTuO6TCxWmUznQe3f8= +github.com/mdlayher/ndp v0.0.0-20220213140253-2a2b53cd2045 h1:cLcATbaiT+9tZwgtOqN1Duhp5bBkHLBxKlrXCf6srtI= +github.com/mdlayher/ndp v0.0.0-20220213140253-2a2b53cd2045/go.mod h1:32w/5dDZWVSEOxyniAgKK4d7dHTuO6TCxWmUznQe3f8= +github.com/mdlayher/ndp v0.0.0-20220304194648-de594d7bc183 h1:s+zRraldOwsr9RR1N6Q37xjIkEBO64Wk+mniHNimXxE= +github.com/mdlayher/ndp v0.0.0-20220304194648-de594d7bc183/go.mod h1:32w/5dDZWVSEOxyniAgKK4d7dHTuO6TCxWmUznQe3f8= +github.com/mdlayher/ndp v0.9.0 h1:2ARcMhqzN+CloJYcW/yeKRm4JCwf7lc1cgYpUSFJYFQ= +github.com/mdlayher/ndp v0.9.0/go.mod h1:Uv6IWvgvqirNUu2N3ZXJEB86xu6foyUsG0NrClSSfek= +github.com/mdlayher/ndp v0.10.0 h1:Zdwol2bq1EHY8xSnejIYkq6LEj7dLjLymJX0o/2tjGw= +github.com/mdlayher/ndp v0.10.0/go.mod h1:Uv6IWvgvqirNUu2N3ZXJEB86xu6foyUsG0NrClSSfek= github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE4aiYnlUsyGGCOpPETfdQq4Jhsgf1fk3cwQaA= github.com/mdlayher/netlink v0.0.0-20191009155606-de872b0d824b/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= diff --git a/internal/radvd/radvd.go b/internal/radvd/radvd.go index 45818e3..df3257d 100644 --- a/internal/radvd/radvd.go +++ b/internal/radvd/radvd.go @@ -18,6 +18,7 @@ package radvd import ( "log" "net" + "net/netip" "sync" "time" @@ -144,21 +145,21 @@ func (s *Server) sendAdvertisement(addr net.Addr) error { if err != nil { return err } - var linkLocal net.IP + var linkLocal netip.Addr for _, addr := range addrs { ipnet, ok := addr.(*net.IPNet) if !ok { continue } if ipv6LinkLocal.Contains(ipnet.IP) { - linkLocal = ipnet.IP + linkLocal, _ = netip.AddrFromSlice(ipnet.IP) break } } - if !linkLocal.Equal(net.IPv6zero) { + if linkLocal.IsValid() && !linkLocal.IsUnspecified() { options = append(options, &ndp.RecursiveDNSServer{ Lifetime: 30 * time.Minute, - Servers: []net.IP{linkLocal}, + Servers: []netip.Addr{linkLocal}, }) } } @@ -170,13 +171,14 @@ func (s *Server) sendAdvertisement(addr net.Addr) error { ones = 64 } + addr, _ := netip.AddrFromSlice(prefix.IP) options = append(options, &ndp.PrefixInformation{ PrefixLength: uint8(ones), OnLink: true, AutonomousAddressConfiguration: true, ValidLifetime: 2 * time.Hour, PreferredLifetime: 30 * time.Minute, - Prefix: prefix.IP, + Prefix: addr, }) }