@@ -10,6 +10,8 @@ import (
1010 "github.com/gorilla/mux"
1111 "github.com/lima-vm/lima/pkg/guestagent"
1212 "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"
1315 "github.com/mdlayher/vsock"
1416 "github.com/sirupsen/logrus"
1517 "github.com/spf13/cobra"
@@ -26,16 +28,24 @@ func newDaemonCommand() *cobra.Command {
2628 return daemonCommand
2729}
2830
31+ var (
32+ vSockPort = 0
33+
34+ virtioPort = "/dev/virtio-ports/" + filenames .VirtioPort
35+ )
36+
2937func daemonAction (cmd * cobra.Command , _ []string ) error {
30- socket := "/run/lima-guestagent.sock"
3138 tick , err := cmd .Flags ().GetDuration ("tick" )
3239 if err != nil {
3340 return err
3441 }
35- vSockPort , err := cmd .Flags ().GetInt ("vsock-port" )
42+ vSockPortOverride , err := cmd .Flags ().GetInt ("vsock-port" )
3643 if err != nil {
3744 return err
3845 }
46+ if vSockPortOverride != 0 {
47+ vSockPort = vSockPortOverride
48+ }
3949 if tick == 0 {
4050 return errors .New ("tick must be specified" )
4151 }
@@ -62,29 +72,22 @@ func daemonAction(cmd *cobra.Command, _ []string) error {
6272 r := mux .NewRouter ()
6373 server .AddRoutes (r , backend )
6474 srv := & http.Server {Handler : r }
65- err = os .RemoveAll (socket )
66- if err != nil {
67- return err
68- }
6975
7076 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 )
7379 if err != nil {
7480 return err
7581 }
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 )
8086 if err != nil {
8187 return err
8288 }
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 )
8891 }
8992 return srv .Serve (l )
9093}
0 commit comments