Skip to content

Commit

Permalink
Refactor limayaml.FirstUsernetIndex impl and usages
Browse files Browse the repository at this point in the history
Signed-off-by: Oleksandr Redko <oleksandr.red+github@gmail.com>
  • Loading branch information
alexandear committed May 23, 2024
1 parent 558da94 commit 9d0f766
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 42 deletions.
3 changes: 1 addition & 2 deletions pkg/cidata/cidata.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
3 changes: 1 addition & 2 deletions pkg/hostagent/hostagent.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 5 additions & 8 deletions pkg/limayaml/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"os"
"path/filepath"
"runtime"
"slices"
"strconv"
"strings"
"text/template"
Expand Down Expand Up @@ -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 {
Expand Down
59 changes: 29 additions & 30 deletions pkg/vz/vm_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 9d0f766

Please sign in to comment.