提交 8ed79ecc 编写于 作者: D Daniel Henrique Barboza 提交者: Cole Robinson

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: NCole Robinson <crobinso@redhat.com>
Signed-off-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
上级 acf1e226
......@@ -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:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册