tmp = virXPathString("string(./model/@type)", ctxt);
if (tmp) {
+ int model;
/* If there's none, we will automatically have the first one
* (as default). Unfortunately this has to be done for
* compatibility reasons. */
- if ((def->model = virDomainShmemModelTypeFromString(tmp)) < 0) {
+ if ((model = virDomainShmemModelTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("Unknown shmem model type '%s'"), tmp);
goto cleanup;
}
+ def->model = model;
VIR_FREE(tmp);
}
struct _virDomainShmemDef {
char *name;
unsigned long long size;
- int model; /* enum virDomainShmemModel */
+ virDomainShmemModel model;
int role; /* enum virDomainShmemRole */
struct {
bool enabled;
return -1;
}
- switch ((virDomainShmemModel)shmem->model) {
+ switch (shmem->model) {
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM:
devstr = qemuBuildShmemDevLegacyStr(def, shmem, qemuCaps);
break;
qemuDomainObjPrivate *priv = vm->privateData;
virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_SHMEM, { .shmem = shmem } };
- switch ((virDomainShmemModel)shmem->model) {
+ switch (shmem->model) {
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN:
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL:
break;
*detach = shmem = vm->def->shmems[idx];
- switch ((virDomainShmemModel)shmem->model) {
+ switch (shmem->model) {
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN:
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL:
break;
virDomainShmemModelTypeToString(shmem->model));
return -1;
}
+ break;
+
+ case VIR_DOMAIN_SHMEM_MODEL_LAST:
+ virReportEnumRangeError(virDomainShmemModel, shmem->model);
+ return -1;
}
return 0;
mem_path = g_strdup_printf("/var/lib/libvirt/shmem-%s-sock",
shmem->name);
break;
+ case VIR_DOMAIN_SHMEM_MODEL_LAST:
+ virReportEnumRangeError(virDomainShmemModel,
+ shmem->model);
+ break;
}
if (mem_path != NULL) {
if (vah_add_file(&buf, mem_path, "rw") != 0)