mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-31 08:01:34 +01:00 
			
		
		
		
	Migrate machine to net/netip
This commit is contained in:
		
							parent
							
								
									197da8afcb
								
							
						
					
					
						commit
						a24710a961
					
				
							
								
								
									
										22
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								machine.go
									
									
									
									
									
								
							| @ -4,6 +4,7 @@ import ( | ||||
| 	"database/sql/driver" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"net/netip" | ||||
| 	"sort" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| @ -12,7 +13,6 @@ import ( | ||||
| 	v1 "github.com/juanfont/headscale/gen/go/headscale/v1" | ||||
| 	"github.com/rs/zerolog/log" | ||||
| 	"google.golang.org/protobuf/types/known/timestamppb" | ||||
| 	"inet.af/netaddr" | ||||
| 	"tailscale.com/tailcfg" | ||||
| 	"tailscale.com/types/key" | ||||
| ) | ||||
| @ -83,7 +83,7 @@ type ( | ||||
| 	MachinesP []*Machine | ||||
| ) | ||||
| 
 | ||||
| type MachineAddresses []netaddr.IP | ||||
| type MachineAddresses []netip.Addr | ||||
| 
 | ||||
| func (ma MachineAddresses) ToStringSlice() []string { | ||||
| 	strSlice := make([]string, 0, len(ma)) | ||||
| @ -103,7 +103,7 @@ func (ma *MachineAddresses) Scan(destination interface{}) error { | ||||
| 			if len(addr) < 1 { | ||||
| 				continue | ||||
| 			} | ||||
| 			parsed, err := netaddr.ParseIP(addr) | ||||
| 			parsed, err := netip.ParseAddr(addr) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| @ -623,14 +623,14 @@ func (machine Machine) toNode( | ||||
| 		discoKey = key.DiscoPublic{} | ||||
| 	} | ||||
| 
 | ||||
| 	addrs := []netaddr.IPPrefix{} | ||||
| 	addrs := []netip.Prefix{} | ||||
| 	for _, machineAddress := range machine.IPAddresses { | ||||
| 		ip := netaddr.IPPrefixFrom(machineAddress, machineAddress.BitLen()) | ||||
| 		ip := netip.PrefixFrom(machineAddress, machineAddress.BitLen()) | ||||
| 		addrs = append(addrs, ip) | ||||
| 	} | ||||
| 
 | ||||
| 	allowedIPs := append( | ||||
| 		[]netaddr.IPPrefix{}, | ||||
| 		[]netip.Prefix{}, | ||||
| 		addrs...) // we append the node own IP, as it is required by the clients | ||||
| 
 | ||||
| 	// TODO(kradalby): Needs investigation, We probably dont need this condition | ||||
| @ -873,16 +873,16 @@ func (h *Headscale) RegisterMachine(machine Machine, | ||||
| 	return &machine, nil | ||||
| } | ||||
| 
 | ||||
| func (machine *Machine) GetAdvertisedRoutes() []netaddr.IPPrefix { | ||||
| func (machine *Machine) GetAdvertisedRoutes() []netip.Prefix { | ||||
| 	return machine.HostInfo.RoutableIPs | ||||
| } | ||||
| 
 | ||||
| func (machine *Machine) GetEnabledRoutes() []netaddr.IPPrefix { | ||||
| func (machine *Machine) GetEnabledRoutes() []netip.Prefix { | ||||
| 	return machine.EnabledRoutes | ||||
| } | ||||
| 
 | ||||
| func (machine *Machine) IsRoutesEnabled(routeStr string) bool { | ||||
| 	route, err := netaddr.ParseIPPrefix(routeStr) | ||||
| 	route, err := netip.ParsePrefix(routeStr) | ||||
| 	if err != nil { | ||||
| 		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 | ||||
| // previous list of routes. | ||||
| 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 { | ||||
| 		route, err := netaddr.ParseIPPrefix(routeStr) | ||||
| 		route, err := netip.ParsePrefix(routeStr) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| @ -2,6 +2,7 @@ package headscale | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"net/netip" | ||||
| 	"reflect" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| @ -9,7 +10,6 @@ import ( | ||||
| 	"time" | ||||
| 
 | ||||
| 	"gopkg.in/check.v1" | ||||
| 	"inet.af/netaddr" | ||||
| 	"tailscale.com/tailcfg" | ||||
| 	"tailscale.com/types/key" | ||||
| ) | ||||
| @ -229,7 +229,7 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) { | ||||
| 			NodeKey:    "bar" + strconv.Itoa(index), | ||||
| 			DiscoKey:   "faa" + strconv.Itoa(index), | ||||
| 			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), | ||||
| 			NamespaceID:    stor[index%2].namespace.ID, | ||||
| @ -243,7 +243,7 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) { | ||||
| 		Groups: map[string][]string{ | ||||
| 			"group:test": {"admin"}, | ||||
| 		}, | ||||
| 		Hosts:     map[string]netaddr.IPPrefix{}, | ||||
| 		Hosts:     map[string]netip.Prefix{}, | ||||
| 		TagOwners: map[string][]string{}, | ||||
| 		ACLs: []ACL{ | ||||
| 			{ | ||||
| @ -326,9 +326,9 @@ func (s *Suite) TestExpireMachine(c *check.C) { | ||||
| } | ||||
| 
 | ||||
| func (s *Suite) TestSerdeAddressStrignSlice(c *check.C) { | ||||
| 	input := MachineAddresses([]netaddr.IP{ | ||||
| 		netaddr.MustParseIP("192.0.2.1"), | ||||
| 		netaddr.MustParseIP("2001:db8::1"), | ||||
| 	input := MachineAddresses([]netip.Addr{ | ||||
| 		netip.MustParseAddr("192.0.2.1"), | ||||
| 		netip.MustParseAddr("2001:db8::1"), | ||||
| 	}) | ||||
| 	serialized, err := input.Value() | ||||
| 	c.Assert(err, check.IsNil) | ||||
| @ -559,21 +559,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -588,19 +588,19 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				}, | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID:          1, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.1")}, | ||||
| 					Namespace:   Namespace{Name: "joe"}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			want: Machines{ | ||||
| 				{ | ||||
| 					ID:          2, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")}, | ||||
| 					Namespace:   Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					ID:          3, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.3")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.3")}, | ||||
| 					Namespace:   Namespace{Name: "mickael"}, | ||||
| 				}, | ||||
| 			}, | ||||
| @ -612,21 +612,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -641,14 +641,14 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				}, | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID:          1, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.1")}, | ||||
| 					Namespace:   Namespace{Name: "joe"}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			want: Machines{ | ||||
| 				{ | ||||
| 					ID:          2, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")}, | ||||
| 					Namespace:   Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| 			}, | ||||
| @ -660,21 +660,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -689,14 +689,14 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				}, | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID:          2, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")}, | ||||
| 					Namespace:   Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			want: Machines{ | ||||
| 				{ | ||||
| 					ID:          3, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.3")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.3")}, | ||||
| 					Namespace:   Namespace{Name: "mickael"}, | ||||
| 				}, | ||||
| 			}, | ||||
| @ -708,21 +708,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -738,7 +738,7 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID: 1, | ||||
| 					IPAddresses: MachineAddresses{ | ||||
| 						netaddr.MustParseIP("100.64.0.1"), | ||||
| 						netip.MustParseAddr("100.64.0.1"), | ||||
| 					}, | ||||
| 					Namespace: Namespace{Name: "joe"}, | ||||
| 				}, | ||||
| @ -747,7 +747,7 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				{ | ||||
| 					ID: 2, | ||||
| 					IPAddresses: MachineAddresses{ | ||||
| 						netaddr.MustParseIP("100.64.0.2"), | ||||
| 						netip.MustParseAddr("100.64.0.2"), | ||||
| 					}, | ||||
| 					Namespace: Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| @ -760,21 +760,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -790,7 +790,7 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID: 2, | ||||
| 					IPAddresses: MachineAddresses{ | ||||
| 						netaddr.MustParseIP("100.64.0.2"), | ||||
| 						netip.MustParseAddr("100.64.0.2"), | ||||
| 					}, | ||||
| 					Namespace: Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| @ -799,14 +799,14 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				{ | ||||
| 					ID: 1, | ||||
| 					IPAddresses: MachineAddresses{ | ||||
| 						netaddr.MustParseIP("100.64.0.1"), | ||||
| 						netip.MustParseAddr("100.64.0.1"), | ||||
| 					}, | ||||
| 					Namespace: Namespace{Name: "joe"}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					ID: 3, | ||||
| 					IPAddresses: MachineAddresses{ | ||||
| 						netaddr.MustParseIP("100.64.0.3"), | ||||
| 						netip.MustParseAddr("100.64.0.3"), | ||||
| 					}, | ||||
| 					Namespace: Namespace{Name: "mickael"}, | ||||
| 				}, | ||||
| @ -819,21 +819,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -848,7 +848,7 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				}, | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID:          2, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")}, | ||||
| 					Namespace:   Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| 			}, | ||||
| @ -856,13 +856,13 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				{ | ||||
| 					ID: 1, | ||||
| 					IPAddresses: MachineAddresses{ | ||||
| 						netaddr.MustParseIP("100.64.0.1"), | ||||
| 						netip.MustParseAddr("100.64.0.1"), | ||||
| 					}, | ||||
| 					Namespace: Namespace{Name: "joe"}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					ID:          3, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.3")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.3")}, | ||||
| 					Namespace:   Namespace{Name: "mickael"}, | ||||
| 				}, | ||||
| 			}, | ||||
| @ -874,21 +874,21 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 					{ | ||||
| 						ID: 1, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.1"), | ||||
| 							netip.MustParseAddr("100.64.0.1"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "joe"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 2, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.2"), | ||||
| 							netip.MustParseAddr("100.64.0.2"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "marc"}, | ||||
| 					}, | ||||
| 					{ | ||||
| 						ID: 3, | ||||
| 						IPAddresses: MachineAddresses{ | ||||
| 							netaddr.MustParseIP("100.64.0.3"), | ||||
| 							netip.MustParseAddr("100.64.0.3"), | ||||
| 						}, | ||||
| 						Namespace: Namespace{Name: "mickael"}, | ||||
| 					}, | ||||
| @ -897,7 +897,7 @@ func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 				}, | ||||
| 				machine: &Machine{ // current machine | ||||
| 					ID:          2, | ||||
| 					IPAddresses: MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, | ||||
| 					IPAddresses: MachineAddresses{netip.MustParseAddr("100.64.0.2")}, | ||||
| 					Namespace:   Namespace{Name: "marc"}, | ||||
| 				}, | ||||
| 			}, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user