diff --git a/pkg/cidata/cidata.go b/pkg/cidata/cidata.go index 909ae538a7a..1459df2a670 100644 --- a/pkg/cidata/cidata.go +++ b/pkg/cidata/cidata.go @@ -141,9 +141,8 @@ func GenerateISO9660(instDir, name string, y *limayaml.LimaYAML, udpDNSLocalPort TimeZone: *y.TimeZone, } - firstUsernetIndex := limayaml.FirstUsernetIndex(y) var subnet net.IP - + firstUsernetIndex := limayaml.FirstUsernetIndex(y) if firstUsernetIndex != -1 { usernetName := y.Networks[firstUsernetIndex].Lima subnet, err = usernet.Subnet(usernetName) diff --git a/pkg/hostagent/hostagent.go b/pkg/hostagent/hostagent.go index efa4cfd11af..52a85551444 100644 --- a/pkg/hostagent/hostagent.go +++ b/pkg/hostagent/hostagent.go @@ -305,8 +305,7 @@ func (a *HostAgent) Run(ctx context.Context) error { }() adjustNofileRlimit() - firstUsernetIndex := limayaml.FirstUsernetIndex(a.y) - if firstUsernetIndex == -1 && *a.y.HostResolver.Enabled { + if limayaml.FirstUsernetIndex(a.y) == -1 && *a.y.HostResolver.Enabled { hosts := a.y.HostResolver.Hosts hosts["host.lima.internal"] = networks.SlirpGateway hosts[fmt.Sprintf("lima-%s", a.instName)] = networks.SlirpIPAddress diff --git a/pkg/limayaml/defaults.go b/pkg/limayaml/defaults.go index 5dea097d7fd..a995713649d 100644 --- a/pkg/limayaml/defaults.go +++ b/pkg/limayaml/defaults.go @@ -8,6 +8,7 @@ import ( "os" "path/filepath" "runtime" + "slices" "strconv" "strings" "text/template" @@ -90,14 +91,10 @@ func defaultContainerdArchives() []File { // FirstUsernetIndex gets the index of first usernet network under l.Network[]. Returns -1 if no usernet network found func FirstUsernetIndex(l *LimaYAML) int { - for i := range l.Networks { - nwName := l.Networks[i].Lima - isUsernet, _ := networks.Usernet(nwName) - if isUsernet { - return i - } - } - return -1 + return slices.IndexFunc(l.Networks, func(network Network) bool { + isUsernet, _ := networks.Usernet(network.Lima) + return isUsernet + }) } func MACAddress(uniqueID string) string { diff --git a/pkg/vz/vm_darwin.go b/pkg/vz/vm_darwin.go index 8d686678b67..9574cd9ef47 100644 --- a/pkg/vz/vm_darwin.go +++ b/pkg/vz/vm_darwin.go @@ -124,37 +124,36 @@ func startVM(ctx context.Context, driver *driver.BaseDriver) (*virtualMachineWra } func startUsernet(ctx context.Context, driver *driver.BaseDriver) (*usernet.Client, error) { - firstUsernetIndex := limayaml.FirstUsernetIndex(driver.Yaml) - if firstUsernetIndex == -1 { - // Start a in-process gvisor-tap-vsock - endpointSock, err := usernet.SockWithDirectory(driver.Instance.Dir, "", usernet.EndpointSock) - if err != nil { - return nil, err - } - vzSock, err := usernet.SockWithDirectory(driver.Instance.Dir, "", usernet.FDSock) - if err != nil { - return nil, err - } - os.RemoveAll(endpointSock) - os.RemoveAll(vzSock) - err = usernet.StartGVisorNetstack(ctx, &usernet.GVisorNetstackOpts{ - MTU: 1500, - Endpoint: endpointSock, - FdSocket: vzSock, - Async: true, - DefaultLeases: map[string]string{ - networks.SlirpIPAddress: limayaml.MACAddress(driver.Instance.Dir), - }, - Subnet: networks.SlirpNetwork, - }) - if err != nil { - return nil, err - } - subnetIP, _, err := net.ParseCIDR(networks.SlirpNetwork) - return usernet.NewClient(endpointSock, subnetIP), err + if firstUsernetIndex := limayaml.FirstUsernetIndex(driver.Yaml); firstUsernetIndex != -1 { + nwName := driver.Yaml.Networks[firstUsernetIndex].Lima + return usernet.NewClientByName(nwName), nil + } + // Start a in-process gvisor-tap-vsock + endpointSock, err := usernet.SockWithDirectory(driver.Instance.Dir, "", usernet.EndpointSock) + if err != nil { + return nil, err + } + vzSock, err := usernet.SockWithDirectory(driver.Instance.Dir, "", usernet.FDSock) + if err != nil { + return nil, err + } + os.RemoveAll(endpointSock) + os.RemoveAll(vzSock) + err = usernet.StartGVisorNetstack(ctx, &usernet.GVisorNetstackOpts{ + MTU: 1500, + Endpoint: endpointSock, + FdSocket: vzSock, + Async: true, + DefaultLeases: map[string]string{ + networks.SlirpIPAddress: limayaml.MACAddress(driver.Instance.Dir), + }, + Subnet: networks.SlirpNetwork, + }) + if err != nil { + return nil, err } - nwName := driver.Yaml.Networks[firstUsernetIndex].Lima - return usernet.NewClientByName(nwName), nil + subnetIP, _, err := net.ParseCIDR(networks.SlirpNetwork) + return usernet.NewClient(endpointSock, subnetIP), err } func createVM(driver *driver.BaseDriver) (*vz.VirtualMachine, error) {