int
qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
- virQEMUCapsPtr qemuCaps,
virJSONValuePtr *props)
{
g_autofree char *objAlias = NULL;
switch ((virDomainRNGBackend) rng->backend) {
case VIR_DOMAIN_RNG_BACKEND_RANDOM:
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_RANDOM)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("this qemu doesn't support the rng-random "
- "backend"));
- return -1;
- }
-
if (qemuMonitorCreateObjectProps(props, "rng-random", objAlias,
"s:filename", rng->source.file,
NULL) < 0)
break;
case VIR_DOMAIN_RNG_BACKEND_EGD:
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_EGD)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("this qemu doesn't support the rng-egd "
- "backend"));
- return -1;
- }
-
if (!(charBackendAlias = qemuAliasChardevFromDevAlias(rng->info.alias)))
return -1;
break;
case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_BUILTIN)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("this qemu doesn't support the rng-builtin "
- "backend"));
- return -1;
- }
-
if (qemuMonitorCreateObjectProps(props, "rng-builtin", objAlias,
NULL) < 0)
return -1;
break;
case VIR_DOMAIN_RNG_BACKEND_LAST:
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("unknown rng-random backend"));
- return -1;
+ break;
}
return 0;
if (chardev)
virCommandAddArgList(cmd, "-chardev", chardev, NULL);
- if (qemuBuildRNGBackendProps(rng, qemuCaps, &props) < 0)
+ if (qemuBuildRNGBackendProps(rng, &props) < 0)
return -1;
rc = virQEMUBuildObjectCommandlineFromJSON(&buf, props);
virDomainRNGDefPtr dev,
virQEMUCapsPtr qemuCaps);
int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
- virQEMUCapsPtr qemuCaps,
virJSONValuePtr *props);
/* Current, best practice */
if (!(devstr = qemuBuildRNGDevStr(vm->def, rng, priv->qemuCaps)))
goto cleanup;
- if (qemuBuildRNGBackendProps(rng, priv->qemuCaps, &props) < 0)
+ if (qemuBuildRNGBackendProps(rng, &props) < 0)
goto cleanup;
if (!(charAlias = qemuAliasChardevFromDevAlias(rng->info.alias)))
qemuValidateDomainRNGDef(const virDomainRNGDef *def,
virQEMUCapsPtr qemuCaps)
{
- if (def->backend == VIR_DOMAIN_RNG_BACKEND_EGD &&
- qemuValidateDomainChrSourceDef(def->source.chardev, qemuCaps) < 0)
+ switch ((virDomainRNGBackend) def->backend) {
+ case VIR_DOMAIN_RNG_BACKEND_RANDOM:
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_RANDOM)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("this qemu doesn't support the rng-random "
+ "backend"));
+ return -1;
+ }
+ break;
+
+ case VIR_DOMAIN_RNG_BACKEND_EGD:
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_EGD)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("this qemu doesn't support the rng-egd "
+ "backend"));
+ return -1;
+ }
+
+ if (qemuValidateDomainChrSourceDef(def->source.chardev, qemuCaps) < 0)
+ return -1;
+
+ break;
+
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_BUILTIN)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("this qemu doesn't support the rng-builtin "
+ "backend"));
+ return -1;
+ }
+ break;
+
+ case VIR_DOMAIN_RNG_BACKEND_LAST:
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("unknown rng-random backend"));
return -1;
+ }
if (qemuValidateDomainVirtioOptions(def->virtio, qemuCaps) < 0)
return -1;
DO_TEST_CAPS_ARCH_LATEST("disk-arm-virtio-sd", "aarch64");
DO_TEST("virtio-rng-random",
- QEMU_CAPS_DEVICE_VIRTIO_RNG);
+ QEMU_CAPS_DEVICE_VIRTIO_RNG,
+ QEMU_CAPS_OBJECT_RNG_RANDOM);
DO_TEST("virtio-rng-egd",
- QEMU_CAPS_DEVICE_VIRTIO_RNG);
+ QEMU_CAPS_DEVICE_VIRTIO_RNG,
+ QEMU_CAPS_OBJECT_RNG_EGD);
DO_TEST_CAPS_LATEST("virtio-rng-builtin");
DO_TEST("pseries-nvram",
DO_TEST_CAPS_LATEST("disk-network-http");
DO_TEST("chardev-label",
- QEMU_CAPS_DEVICE_VIRTIO_RNG);
+ QEMU_CAPS_DEVICE_VIRTIO_RNG,
+ QEMU_CAPS_OBJECT_RNG_EGD);
DO_TEST("cpu-numa1", NONE);
DO_TEST("cpu-numa2", NONE);