1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-02-04 21:47:16 +03:00

qemu: command: move qemuBuildChrChardevStr caps validation to qemu_domain

Move QEMU caps validation of QEMU_CAPS_CHARDEV_FILE_APPEND and
QEMU_CAPS_CHARDEV_LOGFILE to qemuDomainChrSourceDefValidate().

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
Daniel Henrique Barboza 2019-12-09 20:15:17 -03:00 committed by Cole Robinson
parent acf1e22642
commit 8ed79ecc88
2 changed files with 32 additions and 23 deletions

View File

@ -5141,12 +5141,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
case VIR_DOMAIN_CHR_TYPE_FILE:
virBufferAsprintf(&buf, "file,id=%s", charAlias);
if (dev->data.file.append != VIR_TRISTATE_SWITCH_ABSENT &&
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FILE_APPEND)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("append not supported in this QEMU binary"));
return NULL;
}
if (qemuBuildChrChardevFileStr(flags & QEMU_BUILD_CHARDEV_FILE_LOGD ?
logManager : NULL,
cmd, def, &buf,
@ -5282,11 +5276,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
}
if (dev->logfile) {
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_LOGFILE)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("logfile not supported in this QEMU binary"));
return NULL;
}
if (qemuBuildChrChardevFileStr(logManager, cmd, def, &buf,
"logfile", dev->logfile,
"logappend", dev->logappend) < 0)

View File

@ -5592,7 +5592,8 @@ qemuDomainChrSourceReconnectDefValidate(const virDomainChrSourceReconnectDef *de
static int
qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def)
qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def,
virQEMUCapsPtr qemuCaps)
{
switch ((virDomainChrType)def->type) {
case VIR_DOMAIN_CHR_TYPE_TCP:
@ -5605,11 +5606,19 @@ qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def)
return -1;
break;
case VIR_DOMAIN_CHR_TYPE_FILE:
if (def->data.file.append != VIR_TRISTATE_SWITCH_ABSENT &&
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FILE_APPEND)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("append not supported in this QEMU binary"));
return -1;
}
break;
case VIR_DOMAIN_CHR_TYPE_NULL:
case VIR_DOMAIN_CHR_TYPE_VC:
case VIR_DOMAIN_CHR_TYPE_PTY:
case VIR_DOMAIN_CHR_TYPE_DEV:
case VIR_DOMAIN_CHR_TYPE_FILE:
case VIR_DOMAIN_CHR_TYPE_PIPE:
case VIR_DOMAIN_CHR_TYPE_STDIO:
case VIR_DOMAIN_CHR_TYPE_UDP:
@ -5620,6 +5629,14 @@ qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def)
break;
}
if (def->logfile) {
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_LOGFILE)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("logfile not supported in this QEMU binary"));
return -1;
}
}
return 0;
}
@ -5759,9 +5776,10 @@ qemuDomainChrTargetDefValidate(const virDomainChrDef *chr)
static int
qemuDomainChrDefValidate(const virDomainChrDef *dev,
const virDomainDef *def)
const virDomainDef *def,
virQEMUCapsPtr qemuCaps)
{
if (qemuDomainChrSourceDefValidate(dev->source) < 0)
if (qemuDomainChrSourceDefValidate(dev->source, qemuCaps) < 0)
return -1;
if (qemuDomainChrTargetDefValidate(dev) < 0)
@ -5817,10 +5835,11 @@ qemuDomainChrDefValidate(const virDomainChrDef *dev,
static int
qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def)
qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def,
virQEMUCapsPtr qemuCaps)
{
if (def->type == VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH &&
qemuDomainChrSourceDefValidate(def->data.passthru) < 0)
qemuDomainChrSourceDefValidate(def->data.passthru, qemuCaps) < 0)
return -1;
return 0;
@ -5832,7 +5851,7 @@ qemuDomainRNGDefValidate(const virDomainRNGDef *def,
virQEMUCapsPtr qemuCaps G_GNUC_UNUSED)
{
if (def->backend == VIR_DOMAIN_RNG_BACKEND_EGD &&
qemuDomainChrSourceDefValidate(def->source.chardev) < 0)
qemuDomainChrSourceDefValidate(def->source.chardev, qemuCaps) < 0)
return -1;
return 0;
@ -5840,9 +5859,10 @@ qemuDomainRNGDefValidate(const virDomainRNGDef *def,
static int
qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def)
qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def,
virQEMUCapsPtr qemuCaps)
{
if (qemuDomainChrSourceDefValidate(def->source) < 0)
if (qemuDomainChrSourceDefValidate(def->source, qemuCaps) < 0)
return -1;
return 0;
@ -7762,11 +7782,11 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
break;
case VIR_DOMAIN_DEVICE_CHR:
ret = qemuDomainChrDefValidate(dev->data.chr, def);
ret = qemuDomainChrDefValidate(dev->data.chr, def, qemuCaps);
break;
case VIR_DOMAIN_DEVICE_SMARTCARD:
ret = qemuDomainSmartcardDefValidate(dev->data.smartcard);
ret = qemuDomainSmartcardDefValidate(dev->data.smartcard, qemuCaps);
break;
case VIR_DOMAIN_DEVICE_RNG:
@ -7774,7 +7794,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
break;
case VIR_DOMAIN_DEVICE_REDIRDEV:
ret = qemuDomainRedirdevDefValidate(dev->data.redirdev);
ret = qemuDomainRedirdevDefValidate(dev->data.redirdev, qemuCaps);
break;
case VIR_DOMAIN_DEVICE_WATCHDOG: