diff --git a/dns.go b/dns.go index be7c87cc..8f1e88da 100644 --- a/dns.go +++ b/dns.go @@ -2,10 +2,11 @@ package headscale import ( "fmt" + "net/netip" "strings" mapset "github.com/deckarep/golang-set/v2" - "inet.af/netaddr" + "go4.org/netipx" "tailscale.com/tailcfg" "tailscale.com/util/dnsname" ) @@ -39,11 +40,11 @@ const ( // From the netmask we can find out the wildcard bits (the bits that are not set in the netmask). // This allows us to then calculate the subnets included in the subsequent class block and generate the entries. -func generateMagicDNSRootDomains(ipPrefixes []netaddr.IPPrefix) []dnsname.FQDN { +func generateMagicDNSRootDomains(ipPrefixes []netip.Prefix) []dnsname.FQDN { fqdns := make([]dnsname.FQDN, 0, len(ipPrefixes)) for _, ipPrefix := range ipPrefixes { - var generateDNSRoot func(netaddr.IPPrefix) []dnsname.FQDN - switch ipPrefix.IP().BitLen() { + var generateDNSRoot func(netip.Prefix) []dnsname.FQDN + switch ipPrefix.Addr().BitLen() { case ipv4AddressLength: generateDNSRoot = generateIPv4DNSRootDomain @@ -54,7 +55,7 @@ func generateMagicDNSRootDomains(ipPrefixes []netaddr.IPPrefix) []dnsname.FQDN { panic( fmt.Sprintf( "unsupported IP version with address length %d", - ipPrefix.IP().BitLen(), + ipPrefix.Addr().BitLen(), ), ) } @@ -65,9 +66,9 @@ func generateMagicDNSRootDomains(ipPrefixes []netaddr.IPPrefix) []dnsname.FQDN { return fqdns } -func generateIPv4DNSRootDomain(ipPrefix netaddr.IPPrefix) []dnsname.FQDN { +func generateIPv4DNSRootDomain(ipPrefix netip.Prefix) []dnsname.FQDN { // Conversion to the std lib net.IPnet, a bit easier to operate - netRange := ipPrefix.IPNet() + netRange := netipx.PrefixIPNet(ipPrefix) maskBits, _ := netRange.Mask.Size() // lastOctet is the last IP byte covered by the mask @@ -101,11 +102,11 @@ func generateIPv4DNSRootDomain(ipPrefix netaddr.IPPrefix) []dnsname.FQDN { return fqdns } -func generateIPv6DNSRootDomain(ipPrefix netaddr.IPPrefix) []dnsname.FQDN { +func generateIPv6DNSRootDomain(ipPrefix netip.Prefix) []dnsname.FQDN { const nibbleLen = 4 - maskBits, _ := ipPrefix.IPNet().Mask.Size() - expanded := ipPrefix.IP().StringExpanded() + maskBits, _ := netipx.PrefixIPNet(ipPrefix).Mask.Size() + expanded := ipPrefix.Addr().StringExpanded() nibbleStr := strings.Map(func(r rune) rune { if r == ':' { return -1 diff --git a/dns_test.go b/dns_test.go index a2bb9aec..60312ede 100644 --- a/dns_test.go +++ b/dns_test.go @@ -2,16 +2,16 @@ package headscale import ( "fmt" + "net/netip" "gopkg.in/check.v1" - "inet.af/netaddr" "tailscale.com/tailcfg" "tailscale.com/types/dnstype" ) func (s *Suite) TestMagicDNSRootDomains100(c *check.C) { - prefixes := []netaddr.IPPrefix{ - netaddr.MustParseIPPrefix("100.64.0.0/10"), + prefixes := []netip.Prefix{ + netip.MustParsePrefix("100.64.0.0/10"), } domains := generateMagicDNSRootDomains(prefixes) @@ -47,8 +47,8 @@ func (s *Suite) TestMagicDNSRootDomains100(c *check.C) { } func (s *Suite) TestMagicDNSRootDomains172(c *check.C) { - prefixes := []netaddr.IPPrefix{ - netaddr.MustParseIPPrefix("172.16.0.0/16"), + prefixes := []netip.Prefix{ + netip.MustParsePrefix("172.16.0.0/16"), } domains := generateMagicDNSRootDomains(prefixes) @@ -75,8 +75,8 @@ func (s *Suite) TestMagicDNSRootDomains172(c *check.C) { // Happens when netmask is a multiple of 4 bits (sounds likely). func (s *Suite) TestMagicDNSRootDomainsIPv6Single(c *check.C) { - prefixes := []netaddr.IPPrefix{ - netaddr.MustParseIPPrefix("fd7a:115c:a1e0::/48"), + prefixes := []netip.Prefix{ + netip.MustParsePrefix("fd7a:115c:a1e0::/48"), } domains := generateMagicDNSRootDomains(prefixes) @@ -89,8 +89,8 @@ func (s *Suite) TestMagicDNSRootDomainsIPv6Single(c *check.C) { } func (s *Suite) TestMagicDNSRootDomainsIPv6SingleMultiple(c *check.C) { - prefixes := []netaddr.IPPrefix{ - netaddr.MustParseIPPrefix("fd7a:115c:a1e0::/50"), + prefixes := []netip.Prefix{ + netip.MustParsePrefix("fd7a:115c:a1e0::/50"), } domains := generateMagicDNSRootDomains(prefixes) @@ -165,7 +165,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { NamespaceID: namespaceShared1.ID, Namespace: *namespaceShared1, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.1")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.1")}, AuthKeyID: uint(preAuthKeyInShared1.ID), } app.db.Save(machineInShared1) @@ -182,7 +182,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { NamespaceID: namespaceShared2.ID, Namespace: *namespaceShared2, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.2")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.2")}, AuthKeyID: uint(preAuthKeyInShared2.ID), } app.db.Save(machineInShared2) @@ -199,7 +199,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { NamespaceID: namespaceShared3.ID, Namespace: *namespaceShared3, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.3")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.3")}, AuthKeyID: uint(preAuthKeyInShared3.ID), } app.db.Save(machineInShared3) @@ -216,7 +216,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { NamespaceID: namespaceShared1.ID, Namespace: *namespaceShared1, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.4")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.4")}, AuthKeyID: uint(PreAuthKey2InShared1.ID), } app.db.Save(machine2InShared1) @@ -308,7 +308,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { NamespaceID: namespaceShared1.ID, Namespace: *namespaceShared1, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.1")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.1")}, AuthKeyID: uint(preAuthKeyInShared1.ID), } app.db.Save(machineInShared1) @@ -325,7 +325,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { NamespaceID: namespaceShared2.ID, Namespace: *namespaceShared2, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.2")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.2")}, AuthKeyID: uint(preAuthKeyInShared2.ID), } app.db.Save(machineInShared2) @@ -342,7 +342,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { NamespaceID: namespaceShared3.ID, Namespace: *namespaceShared3, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.3")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.3")}, AuthKeyID: uint(preAuthKeyInShared3.ID), } app.db.Save(machineInShared3) @@ -359,7 +359,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { NamespaceID: namespaceShared1.ID, Namespace: *namespaceShared1, RegisterMethod: RegisterMethodAuthKey, - IPAddresses: []netaddr.IP{netaddr.MustParseIP("100.64.0.4")}, + IPAddresses: []netip.Addr{netip.MustParseAddr("100.64.0.4")}, AuthKeyID: uint(preAuthKey2InShared1.ID), } app.db.Save(machine2InShared1)