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:
parent
acf1e22642
commit
8ed79ecc88
@ -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)
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user