Update the daemon to recognise a guestfs_vmchannel argument of the form "virtio-serial:<name>". The daemon will expect a virtio-serial device to be available locally at /dev/virtio-ports/<name>. --- daemon/guestfsd.c | 32 ++++++++++++++++++++++++++++++-- 1 files changed, 30 insertions(+), 2 deletions(-) diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index 49aca08..1417e50 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -345,10 +345,38 @@ main (int argc, char *argv[]) } } freeaddrinfo (res); - } else { + } + +#define VSPREFIX "virtio-serial:" +#define VSPREFIX_LEN sizeof(VSPREFIX) + + else if (STREQLEN (vmchannel, VSPREFIX, VSPREFIX_LEN)) { + char *name; + + if (asprintf(&name, "/dev/virtio-ports/%s", vmchannel + VSPREFIX_LEN) < 0) + { + perror ("malloc"); + exit (EXIT_FAILURE); + } + + fprintf (stderr, "Attempting to open virtio-serial device %s\n", name); + sock = open (name, O_RDWR); + if (sock == -1) { + fprintf (stderr, "open %s: %m\n", name); + } + + free(name); + } + +#undef VSPREFIX +#undef VSPREFIX_LEN + + else { fprintf (stderr, "unknown vmchannel connection type: %s\n" - "expecting \"tcp:<ip>:<port>\"\n", + "expecting one of:\n" + "\"tcp:<ip>:<port>\"\n" + "\"virtio-serial:<name>\"\n", vmchannel); exit (EXIT_FAILURE); } -- 1.7.2.2