return -1;
}
+
+enum {
+ QEMU_BUILD_CHARDEV_TCP_NOWAIT = (1 << 0),
+ QEMU_BUILD_CHARDEV_FILE_LOGD = (1 << 1),
+};
+
/* This function outputs a -chardev command line option which describes only the
* host side of the character device */
static char *
const virDomainChrSourceDef *dev,
const char *alias,
virQEMUCapsPtr qemuCaps,
- bool nowait,
- bool chardevStdioLogd)
+ unsigned int flags)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
bool telnet;
_("append not supported in this QEMU binary"));
goto cleanup;
}
- if (qemuBuildChrChardevFileStr(chardevStdioLogd ? logManager : NULL,
+ if (qemuBuildChrChardevFileStr(flags & QEMU_BUILD_CHARDEV_FILE_LOGD ?
+ logManager : NULL,
cmd, def, &buf,
"path", dev->data.file.path,
"append", dev->data.file.append) < 0)
dev->data.tcp.service,
telnet ? ",telnet" : "");
- if (dev->data.tcp.listen)
- virBufferAdd(&buf, nowait ? ",server,nowait" : ",server", -1);
+ if (dev->data.tcp.listen) {
+ virBufferAddLit(&buf, ",server");
+ if (flags & QEMU_BUILD_CHARDEV_TCP_NOWAIT)
+ virBufferAddLit(&buf, ",nowait");
+ }
qemuBuildChrChardevReconnectStr(&buf, &dev->data.tcp.reconnect);
virBufferAsprintf(&buf, "socket,id=%s,path=", charAlias);
virQEMUBuildBufferEscapeComma(&buf, dev->data.nix.path);
}
- if (dev->data.nix.listen)
- virBufferAdd(&buf, nowait ? ",server,nowait" : ",server", -1);
+ if (dev->data.nix.listen) {
+ virBufferAddLit(&buf, ",server");
+ if (flags & QEMU_BUILD_CHARDEV_TCP_NOWAIT)
+ virBufferAddLit(&buf, ",nowait");
+ }
qemuBuildChrChardevReconnectStr(&buf, &dev->data.nix.reconnect);
break;
qemuDomainObjPrivatePtr priv)
{
char *chrdev;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (priv->chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
if (!priv->monConfig)
return 0;
if (!(chrdev = qemuBuildChrChardevStr(logManager, secManager,
cmd, cfg, def,
priv->monConfig, "monitor",
- priv->qemuCaps, true,
- priv->chardevStdioLogd)))
+ priv->qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, chrdev);
char **chr,
bool chardevStdioLogd)
{
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
*chr = NULL;
switch ((virDomainRNGBackend) rng->backend) {
if (!(*chr = qemuBuildChrChardevStr(logManager, secManager,
cmd, cfg, def,
rng->source.chardev,
- rng->info.alias, qemuCaps, true,
- chardevStdioLogd)))
+ rng->info.alias, qemuCaps,
+ cdevflags)))
return -1;
}
if (!(chardev = qemuBuildChrChardevStr(logManager, secManager,
cmd, cfg, def,
net->data.vhostuser,
- net->info.alias, qemuCaps, false,
- false)))
+ net->info.alias, qemuCaps, 0)))
goto cleanup;
break;
virBuffer opt = VIR_BUFFER_INITIALIZER;
const char *database;
const char *contAlias = NULL;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
if (!def->nsmartcards)
return 0;
cmd, cfg, def,
smartcard->data.passthru,
smartcard->info.alias,
- qemuCaps, true,
- chardevStdioLogd))) {
+ qemuCaps, cdevflags))) {
virBufferFreeAndReset(&opt);
return -1;
}
virBuffer buf = VIR_BUFFER_INITIALIZER;
char *devstr = NULL;
int rc;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
if (shmem->size) {
/*
devstr = qemuBuildChrChardevStr(logManager, secManager,
cmd, cfg, def,
&shmem->server.chr,
- shmem->info.alias, qemuCaps, true,
- chardevStdioLogd);
+ shmem->info.alias, qemuCaps,
+ cdevflags);
if (!devstr)
return -1;
{
size_t i;
bool havespice = false;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
if (def->nserials) {
for (i = 0; i < def->ngraphics && !havespice; i++) {
cmd, cfg, def,
serial->source,
serial->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
bool chardevStdioLogd)
{
size_t i;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
for (i = 0; i < def->nparallels; i++) {
virDomainChrDefPtr parallel = def->parallels[i];
cmd, cfg, def,
parallel->source,
parallel->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
bool chardevStdioLogd)
{
size_t i;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
for (i = 0; i < def->nchannels; i++) {
virDomainChrDefPtr channel = def->channels[i];
cmd, cfg, def,
channel->source,
channel->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
cmd, cfg, def,
channel->source,
channel->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
bool chardevStdioLogd)
{
size_t i;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
/* Explicit console devices */
for (i = 0; i < def->nconsoles; i++) {
cmd, cfg, def,
console->source,
console->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
cmd, cfg, def,
console->source,
console->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
cmd, cfg, def,
console->source,
console->info.alias,
- qemuCaps, true,
- chardevStdioLogd)))
+ qemuCaps, cdevflags)))
return -1;
virCommandAddArg(cmd, "-chardev");
virCommandAddArg(cmd, devstr);
bool chardevStdioLogd)
{
size_t i;
+ unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT;
+ if (chardevStdioLogd)
+ cdevflags |= QEMU_BUILD_CHARDEV_FILE_LOGD;
for (i = 0; i < def->nredirdevs; i++) {
virDomainRedirdevDefPtr redirdev = def->redirdevs[i];
cmd, cfg, def,
redirdev->source,
redirdev->info.alias,
- qemuCaps, true,
- chardevStdioLogd))) {
+ qemuCaps, cdevflags))) {
return -1;
}