Skip to content

Commit bfd792f

Browse files
authored
Merge pull request #3428 from arixmkii/driver-negotiate-transport
Allow drivers to negotiate transport independent of hostagent
2 parents 4c82f35 + f77dde9 commit bfd792f

File tree

4 files changed

+22
-20
lines changed

4 files changed

+22
-20
lines changed

pkg/hostagent/hostagent.go

+6-20
Original file line numberDiff line numberDiff line change
@@ -123,20 +123,13 @@ func New(instName string, stdout io.Writer, signalCh chan os.Signal, opts ...Opt
123123
}
124124
}
125125

126-
vSockPort := 0
127-
virtioPort := ""
128-
if *inst.Config.VMType == limayaml.VZ {
129-
vSockPort = 2222
130-
} else if *inst.Config.VMType == limayaml.WSL2 {
131-
port, err := freeport.VSock()
132-
if err != nil {
133-
logrus.WithError(err).Error("failed to get free VSock port")
134-
}
135-
vSockPort = port
136-
} else if *inst.Config.VMType == limayaml.QEMU {
137-
// virtserialport doesn't seem to work reliably: https://github.com/lima-vm/lima/issues/2064
138-
virtioPort = "" // filenames.VirtioPort
126+
baseDriver := driver.BaseDriver{
127+
Instance: inst,
128+
SSHLocalPort: sshLocalPort,
139129
}
130+
limaDriver := driverutil.CreateTargetDriverInstance(&baseDriver)
131+
vSockPort := baseDriver.VSockPort
132+
virtioPort := baseDriver.VirtioPort
140133

141134
if err := cidata.GenerateCloudConfig(inst.Dir, instName, inst.Config); err != nil {
142135
return nil, err
@@ -196,13 +189,6 @@ func New(instName string, stdout io.Writer, signalCh chan os.Signal, opts ...Opt
196189
limayaml.FillPortForwardDefaults(&rule, inst.Dir, inst.Config.User, inst.Param)
197190
rules = append(rules, rule)
198191

199-
limaDriver := driverutil.CreateTargetDriverInstance(&driver.BaseDriver{
200-
Instance: inst,
201-
SSHLocalPort: sshLocalPort,
202-
VSockPort: vSockPort,
203-
VirtioPort: virtioPort,
204-
})
205-
206192
a := &HostAgent{
207193
instConfig: inst.Config,
208194
sshLocalPort: sshLocalPort,

pkg/qemu/qemu_driver.go

+7
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ type LimaQemuDriver struct {
4141
}
4242

4343
func New(driver *driver.BaseDriver) *LimaQemuDriver {
44+
driver.VSockPort = 0
45+
driver.VirtioPort = filenames.VirtioPort
46+
// virtserialport doesn't seem to work reliably: https://github.com/lima-vm/lima/issues/2064
47+
// but on Windows default Unix socket forwarding is not available
48+
if runtime.GOOS != "windows" {
49+
driver.VirtioPort = ""
50+
}
4451
return &LimaQemuDriver{
4552
BaseDriver: driver,
4653
}

pkg/vz/vz_driver_darwin.go

+2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ type LimaVzDriver struct {
7272
}
7373

7474
func New(driver *driver.BaseDriver) *LimaVzDriver {
75+
driver.VSockPort = 2222
76+
driver.VirtioPort = ""
7577
return &LimaVzDriver{
7678
BaseDriver: driver,
7779
}

pkg/wsl2/wsl_driver_windows.go

+7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/Microsoft/go-winio"
1313
"github.com/Microsoft/go-winio/pkg/guid"
1414
"github.com/lima-vm/lima/pkg/driver"
15+
"github.com/lima-vm/lima/pkg/freeport"
1516
"github.com/lima-vm/lima/pkg/limayaml"
1617
"github.com/lima-vm/lima/pkg/reflectutil"
1718
"github.com/lima-vm/lima/pkg/store"
@@ -49,6 +50,12 @@ type LimaWslDriver struct {
4950
}
5051

5152
func New(driver *driver.BaseDriver) *LimaWslDriver {
53+
port, err := freeport.VSock()
54+
if err != nil {
55+
logrus.WithError(err).Error("failed to get free VSock port")
56+
}
57+
driver.VSockPort = port
58+
driver.VirtioPort = ""
5259
return &LimaWslDriver{
5360
BaseDriver: driver,
5461
}

0 commit comments

Comments
 (0)