Migrate machine to net/netip

This commit is contained in:
Juan Font Alonso 2022-09-02 00:04:31 +02:00
parent 197da8afcb
commit a24710a961
2 changed files with 54 additions and 54 deletions

View File

@ -4,6 +4,7 @@ import (
"database/sql/driver" "database/sql/driver"
"errors" "errors"
"fmt" "fmt"
"net/netip"
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
@ -12,7 +13,6 @@ import (
v1 "github.com/juanfont/headscale/gen/go/headscale/v1" v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/timestamppb"
"inet.af/netaddr"
"tailscale.com/tailcfg" "tailscale.com/tailcfg"
"tailscale.com/types/key" "tailscale.com/types/key"
) )
@ -83,7 +83,7 @@ type (
MachinesP []*Machine MachinesP []*Machine
) )
type MachineAddresses []netaddr.IP type MachineAddresses []netip.Addr
func (ma MachineAddresses) ToStringSlice() []string { func (ma MachineAddresses) ToStringSlice() []string {
strSlice := make([]string, 0, len(ma)) strSlice := make([]string, 0, len(ma))
@ -103,7 +103,7 @@ func (ma *MachineAddresses) Scan(destination interface{}) error {
if len(addr) < 1 { if len(addr) < 1 {
continue continue
} }
parsed, err := netaddr.ParseIP(addr) parsed, err := netip.ParseAddr(addr)
if err != nil { if err != nil {
return err return err
} }
@ -623,14 +623,14 @@ func (machine Machine) toNode(
discoKey = key.DiscoPublic{} discoKey = key.DiscoPublic{}
} }
addrs := []netaddr.IPPrefix{} addrs := []netip.Prefix{}
for _, machineAddress := range machine.IPAddresses { for _, machineAddress := range machine.IPAddresses {
ip := netaddr.IPPrefixFrom(machineAddress, machineAddress.BitLen()) ip := netip.PrefixFrom(machineAddress, machineAddress.BitLen())
addrs = append(addrs, ip) addrs = append(addrs, ip)
} }
allowedIPs := append( allowedIPs := append(
[]netaddr.IPPrefix{}, []netip.Prefix{},
addrs...) // we append the node own IP, as it is required by the clients addrs...) // we append the node own IP, as it is required by the clients
// TODO(kradalby): Needs investigation, We probably dont need this condition // TODO(kradalby): Needs investigation, We probably dont need this condition
@ -873,16 +873,16 @@ func (h *Headscale) RegisterMachine(machine Machine,
return &machine, nil return &machine, nil
} }
func (machine *Machine) GetAdvertisedRoutes() []netaddr.IPPrefix { func (machine *Machine) GetAdvertisedRoutes() []netip.Prefix {
return machine.HostInfo.RoutableIPs return machine.HostInfo.RoutableIPs
} }
func (machine *Machine) GetEnabledRoutes() []netaddr.IPPrefix { func (machine *Machine) GetEnabledRoutes() []netip.Prefix {
return machine.EnabledRoutes return machine.EnabledRoutes
} }
func (machine *Machine) IsRoutesEnabled(routeStr string) bool { func (machine *Machine) IsRoutesEnabled(routeStr string) bool {
route, err := netaddr.ParseIPPrefix(routeStr) route, err := netip.ParsePrefix(routeStr)
if err != nil { if err != nil {
return false return false
} }
@ -901,9 +901,9 @@ func (machine *Machine) IsRoutesEnabled(routeStr string) bool {
// EnableNodeRoute enables new routes based on a list of new routes. It will _replace_ the // EnableNodeRoute enables new routes based on a list of new routes. It will _replace_ the
// previous list of routes. // previous list of routes.
func (h *Headscale) EnableRoutes(machine *Machine, routeStrs ...string) error { func (h *Headscale) EnableRoutes(machine *Machine, routeStrs ...string) error {
newRoutes := make([]netaddr.IPPrefix, len(routeStrs)) newRoutes := make([]netip.Prefix, len(routeStrs))
for index, routeStr := range routeStrs { for index, routeStr := range routeStrs {
route, err := netaddr.ParseIPPrefix(routeStr) route, err := netip.ParsePrefix(routeStr)
if err != nil { if err != nil {
return err return err
} }

View File

@ -2,6 +2,7 @@ package headscale
import ( import (
"fmt" "fmt"
"net/netip"
"reflect" "reflect"
"strconv" "strconv"
"strings" "strings"
@ -9,7 +10,6 @@ import (
"time" "time"
"gopkg.in/check.v1" "gopkg.in/check.v1"
"inet.af/netaddr"
"tailscale.com/tailcfg" "tailscale.com/tailcfg"
"tailscale.com/types/key" "tailscale.com/types/key"
) )
@ -229,7 +229,7 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) {
NodeKey: "bar" + strconv.Itoa(index), NodeKey: "bar" + strconv.Itoa(index),
DiscoKey: "faa" + strconv.Itoa(index), DiscoKey: "faa" + strconv.Itoa(index),
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP(fmt.Sprintf("100.64.0.%v", strconv.Itoa(index+1))), netip.MustParseAddr(fmt.Sprintf("100.64.0.%v", strconv.Itoa(index+1))),
}, },
Hostname: "testmachine" + strconv.Itoa(index), Hostname: "testmachine" + strconv.Itoa(index),
NamespaceID: stor[index%2].namespace.ID, NamespaceID: stor[index%2].namespace.ID,
@ -243,7 +243,7 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) {
Groups: map[string][]string{ Groups: map[string][]string{
"group:test": {"admin"}, "group:test": {"admin"},
}, },
Hosts: map[string]netaddr.IPPrefix{}, Hosts: map[string]netip.Prefix{},
TagOwners: map[string][]string{}, TagOwners: map[string][]string{},
ACLs: []ACL{ ACLs: []ACL{
{ {
@ -326,9 +326,9 @@ func (s *Suite) TestExpireMachine(c *check.C) {
} }
func (s *Suite) TestSerdeAddressStrignSlice(c *check.C) { func (s *Suite) TestSerdeAddressStrignSlice(c *check.C) {
input := MachineAddresses([]netaddr.IP{ input := MachineAddresses([]netip.Addr{
netaddr.MustParseIP("192.0.2.1"), netip.MustParseAddr("192.0.2.1"),
netaddr.MustParseIP("2001:db8::1"), netip.MustParseAddr("2001:db8::1"),
}) })
serialized, err := input.Value() serialized, err := input.Value()
c.Assert(err, check.IsNil) c.Assert(err, check.IsNil)
@ -559,21 +559,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -588,19 +588,19 @@ func Test_getFilteredByACLPeers(t *testing.T) {
}, },
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 1, ID: 1,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.1")},
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
}, },
want: Machines{ want: Machines{
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")},
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.3")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.3")},
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
}, },
@ -612,21 +612,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -641,14 +641,14 @@ func Test_getFilteredByACLPeers(t *testing.T) {
}, },
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 1, ID: 1,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.1")},
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
}, },
want: Machines{ want: Machines{
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")},
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
}, },
@ -660,21 +660,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -689,14 +689,14 @@ func Test_getFilteredByACLPeers(t *testing.T) {
}, },
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 2, ID: 2,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")},
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
}, },
want: Machines{ want: Machines{
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.3")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.3")},
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
}, },
@ -708,21 +708,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -738,7 +738,7 @@ func Test_getFilteredByACLPeers(t *testing.T) {
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
@ -747,7 +747,7 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
@ -760,21 +760,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -790,7 +790,7 @@ func Test_getFilteredByACLPeers(t *testing.T) {
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
@ -799,14 +799,14 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -819,21 +819,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -848,7 +848,7 @@ func Test_getFilteredByACLPeers(t *testing.T) {
}, },
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 2, ID: 2,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")},
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
}, },
@ -856,13 +856,13 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.3")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.3")},
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
}, },
@ -874,21 +874,21 @@ func Test_getFilteredByACLPeers(t *testing.T) {
{ {
ID: 1, ID: 1,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.1"), netip.MustParseAddr("100.64.0.1"),
}, },
Namespace: Namespace{Name: "joe"}, Namespace: Namespace{Name: "joe"},
}, },
{ {
ID: 2, ID: 2,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.2"), netip.MustParseAddr("100.64.0.2"),
}, },
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
{ {
ID: 3, ID: 3,
IPAddresses: MachineAddresses{ IPAddresses: MachineAddresses{
netaddr.MustParseIP("100.64.0.3"), netip.MustParseAddr("100.64.0.3"),
}, },
Namespace: Namespace{Name: "mickael"}, Namespace: Namespace{Name: "mickael"},
}, },
@ -897,7 +897,7 @@ func Test_getFilteredByACLPeers(t *testing.T) {
}, },
machine: &Machine{ // current machine machine: &Machine{ // current machine
ID: 2, ID: 2,
IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")},
Namespace: Namespace{Name: "marc"}, Namespace: Namespace{Name: "marc"},
}, },
}, },