@@ -10,6 +10,7 @@ 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"
1314 "github.com/mdlayher/vsock"
1415 "github.com/sirupsen/logrus"
1516 "github.com/spf13/cobra"
@@ -26,16 +27,24 @@ func newDaemonCommand() *cobra.Command {
2627 return daemonCommand
2728}
2829
30+ var (
31+ vSockPort = 0
32+
33+ qemuFile = "/dev/virtio-ports/lima.guest_agent.0"
34+ )
35+
2936func daemonAction (cmd * cobra.Command , _ []string ) error {
30- socket := "/run/lima-guestagent.sock"
3137 tick , err := cmd .Flags ().GetDuration ("tick" )
3238 if err != nil {
3339 return err
3440 }
35- vSockPort , err := cmd .Flags ().GetInt ("vsock-port" )
41+ vSockPortOverride , err := cmd .Flags ().GetInt ("vsock-port" )
3642 if err != nil {
3743 return err
3844 }
45+ if vSockPortOverride != 0 {
46+ vSockPort = vSockPortOverride
47+ }
3948 if tick == 0 {
4049 return errors .New ("tick must be specified" )
4150 }
@@ -62,29 +71,22 @@ func daemonAction(cmd *cobra.Command, _ []string) error {
6271 r := mux .NewRouter ()
6372 server .AddRoutes (r , backend )
6473 srv := & http.Server {Handler : r }
65- err = os .RemoveAll (socket )
66- if err != nil {
67- return err
68- }
6974
7075 var l net.Listener
71- if vSockPort != 0 {
72- vsockL , err := vsock .Listen (uint32 ( vSockPort ), nil )
76+ if _ , err := os . Stat ( qemuFile ); err == nil {
77+ qemuL , err := serialport .Listen (qemuFile )
7378 if err != nil {
7479 return err
7580 }
76- l = vsockL
77- logrus .Infof ("serving the guest agent on vsock port : %d " , vSockPort )
78- } else {
79- socketL , err := net .Listen ("unix" , socket )
81+ l = qemuL
82+ logrus .Infof ("serving the guest agent on qemu serial file : %s " , qemuFile )
83+ } else if vSockPort != 0 {
84+ vsockL , err := vsock .Listen (uint32 ( vSockPort ), nil )
8085 if err != nil {
8186 return err
8287 }
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 )
88+ l = vsockL
89+ logrus .Infof ("serving the guest agent on vsock port: %d" , vSockPort )
8890 }
8991 return srv .Serve (l )
9092}
0 commit comments