@@ -10,6 +10,8 @@ import (
10
10
"github.com/gorilla/mux"
11
11
"github.com/lima-vm/lima/pkg/guestagent"
12
12
"github.com/lima-vm/lima/pkg/guestagent/api/server"
13
+ "github.com/lima-vm/lima/pkg/guestagent/serialport"
14
+ "github.com/lima-vm/lima/pkg/store/filenames"
13
15
"github.com/mdlayher/vsock"
14
16
"github.com/sirupsen/logrus"
15
17
"github.com/spf13/cobra"
@@ -26,16 +28,24 @@ func newDaemonCommand() *cobra.Command {
26
28
return daemonCommand
27
29
}
28
30
31
+ var (
32
+ vSockPort = 0
33
+
34
+ virtioPort = "/dev/virtio-ports/" + filenames .VirtioPort
35
+ )
36
+
29
37
func daemonAction (cmd * cobra.Command , _ []string ) error {
30
- socket := "/run/lima-guestagent.sock"
31
38
tick , err := cmd .Flags ().GetDuration ("tick" )
32
39
if err != nil {
33
40
return err
34
41
}
35
- vSockPort , err := cmd .Flags ().GetInt ("vsock-port" )
42
+ vSockPortOverride , err := cmd .Flags ().GetInt ("vsock-port" )
36
43
if err != nil {
37
44
return err
38
45
}
46
+ if vSockPortOverride != 0 {
47
+ vSockPort = vSockPortOverride
48
+ }
39
49
if tick == 0 {
40
50
return errors .New ("tick must be specified" )
41
51
}
@@ -62,29 +72,22 @@ func daemonAction(cmd *cobra.Command, _ []string) error {
62
72
r := mux .NewRouter ()
63
73
server .AddRoutes (r , backend )
64
74
srv := & http.Server {Handler : r }
65
- err = os .RemoveAll (socket )
66
- if err != nil {
67
- return err
68
- }
69
75
70
76
var l net.Listener
71
- if vSockPort != 0 {
72
- vsockL , err := vsock .Listen (uint32 ( vSockPort ), nil )
77
+ if _ , err := os . Stat ( virtioPort ); err == nil {
78
+ qemuL , err := serialport .Listen (virtioPort )
73
79
if err != nil {
74
80
return err
75
81
}
76
- l = vsockL
77
- logrus .Infof ("serving the guest agent on vsock port : %d " , vSockPort )
78
- } else {
79
- socketL , err := net .Listen ("unix" , socket )
82
+ l = qemuL
83
+ logrus .Infof ("serving the guest agent on qemu serial file : %s " , virtioPort )
84
+ } else if vSockPort != 0 {
85
+ vsockL , err := vsock .Listen (uint32 ( vSockPort ), nil )
80
86
if err != nil {
81
87
return err
82
88
}
83
- if err := os .Chmod (socket , 0o777 ); err != nil {
84
- return err
85
- }
86
- l = socketL
87
- logrus .Infof ("serving the guest agent on %q" , socket )
89
+ l = vsockL
90
+ logrus .Infof ("serving the guest agent on vsock port: %d" , vSockPort )
88
91
}
89
92
return srv .Serve (l )
90
93
}
0 commit comments