Note that, on its own, this patch will generate a warning about an unused static function. --- src/qemu/qemu_conf.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 87 insertions(+), 0 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index e5d19ef..3e37c66 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1386,6 +1386,93 @@ qemuBuildHostNetStr(virConnectPtr conn, return 0; } +/* This function outputs a -chardev command line option which describes only the + * host side of the character device */ +static int qemudBuildCommandLineChrDevChardevStr(virDomainChrDefPtr dev, + const char *const id, + char *buf, + int buflen) +{ + switch(dev->type) { + case VIR_DOMAIN_CHR_TYPE_NULL: + if (snprintf(buf, buflen, "null,id=%s", id) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_VC: + if (snprintf(buf, buflen, "vc,id=%s", id) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_PTY: + if (snprintf(buf, buflen, "pty,id=%s", id) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_DEV: + if (snprintf(buf, buflen, "tty,id=%s,path=%s", + id, dev->data.file.path) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_FILE: + if (snprintf(buf, buflen, "file,id=%s,path=%s", + id, dev->data.file.path) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_PIPE: + if (snprintf(buf, buflen, "pipe,id=%s,path=%s", + id, dev->data.file.path) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_STDIO: + if (snprintf(buf, buflen, "stdio,id=%s", id) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_UDP: + if (snprintf(buf, buflen, + "udp,id=%s,host=%s,port=%s,localaddr=%s,localport=%s", + id, + dev->data.udp.connectHost, + dev->data.udp.connectService, + dev->data.udp.bindHost, + dev->data.udp.bindService) >= buflen) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_TCP: + { + bool telnet = + dev->data.tcp.protocol == VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET; + + if (snprintf(buf, buflen, + "socket,id=%s,host=%s,port=%s%s%s", + id, + dev->data.tcp.host, + dev->data.tcp.service, + telnet ? ",telnet" : "", + dev->data.tcp.listen ? ",server,nowait" : "") >= buflen) + return -1; + break; + } + + case VIR_DOMAIN_CHR_TYPE_UNIX: + if (snprintf(buf, buflen, + "socket,id=%s,path=%s%s", + id, + dev->data.nix.path, + dev->data.nix.listen ? ",server,nowait" : "") >= buflen) + return -1; + break; + } + + return 0; +} + +/* This function outputs an all-in-one character device command line option */ static int qemudBuildCommandLineChrDevStr(virDomainChrDefPtr dev, char *buf, int buflen) -- 1.6.2.5 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list