radvd: switch to netip package for mdlayher/ndp

This commit is contained in:
Michael Stapelberg 2022-03-25 09:09:26 +01:00
parent 2014da4ca3
commit ef7089dc61
3 changed files with 18 additions and 8 deletions

2
go.mod
View File

@ -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

12
go.sum
View File

@ -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=

View File

@ -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,
})
}