mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
virDomainDeviceInfo: Convert 'type' field to proper enum type
Convert the field, adjust the XML parsers to use virXMLPropEnum() and fill in missing cases to switch() statements. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
cc4bb25852
commit
2dd6369477
@ -98,7 +98,7 @@ virDomainDeviceInfoAddressIsEqual(const virDomainDeviceInfo *a,
|
|||||||
if (a->type != b->type)
|
if (a->type != b->type)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch ((virDomainDeviceAddressType) a->type) {
|
switch (a->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST:
|
||||||
/* address types below don't have any specific data */
|
/* address types below don't have any specific data */
|
||||||
@ -427,6 +427,16 @@ virDomainDeviceAddressIsValid(virDomainDeviceInfo *info,
|
|||||||
|
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UNASSIGNED:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "virenum.h"
|
#include "virenum.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE,
|
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE = 0,
|
||||||
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI,
|
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI,
|
||||||
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE,
|
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE,
|
||||||
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL,
|
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL,
|
||||||
@ -116,7 +116,7 @@ struct _virDomainDeviceDimmAddress {
|
|||||||
typedef struct _virDomainDeviceInfo virDomainDeviceInfo;
|
typedef struct _virDomainDeviceInfo virDomainDeviceInfo;
|
||||||
struct _virDomainDeviceInfo {
|
struct _virDomainDeviceInfo {
|
||||||
char *alias;
|
char *alias;
|
||||||
int type; /* virDomainDeviceAddressType */
|
virDomainDeviceAddressType type;
|
||||||
union {
|
union {
|
||||||
virPCIDeviceAddress pci;
|
virPCIDeviceAddress pci;
|
||||||
virDomainDeviceDriveAddress drive;
|
virDomainDeviceDriveAddress drive;
|
||||||
|
@ -5366,7 +5366,7 @@ virDomainDeviceInfoFormat(virBuffer *buf,
|
|||||||
virBufferAsprintf(&attrBuf, " type='%s'",
|
virBufferAsprintf(&attrBuf, " type='%s'",
|
||||||
virDomainDeviceAddressTypeToString(info->type));
|
virDomainDeviceAddressTypeToString(info->type));
|
||||||
|
|
||||||
switch ((virDomainDeviceAddressType) info->type) {
|
switch (info->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
||||||
if (!virPCIDeviceAddressIsEmpty(&info->addr.pci)) {
|
if (!virPCIDeviceAddressIsEmpty(&info->addr.pci)) {
|
||||||
virBufferAsprintf(&attrBuf, " domain='0x%04x' bus='0x%02x' "
|
virBufferAsprintf(&attrBuf, " domain='0x%04x' bus='0x%02x' "
|
||||||
@ -5539,21 +5539,14 @@ static int
|
|||||||
virDomainDeviceAddressParseXML(xmlNodePtr address,
|
virDomainDeviceAddressParseXML(xmlNodePtr address,
|
||||||
virDomainDeviceInfo *info)
|
virDomainDeviceInfo *info)
|
||||||
{
|
{
|
||||||
g_autofree char *type = virXMLPropString(address, "type");
|
if (virXMLPropEnum(address, "type",
|
||||||
|
virDomainDeviceAddressTypeFromString,
|
||||||
if (!type) {
|
VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO,
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
&info->type) < 0) {
|
||||||
"%s", _("No type specified for device address"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((info->type = virDomainDeviceAddressTypeFromString(type)) <= 0) {
|
switch (info->type) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("unknown address type '%1$s'"), type);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ((virDomainDeviceAddressType) info->type) {
|
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
||||||
if (virPCIDeviceAddressParseXML(address, &info->addr.pci) < 0)
|
if (virPCIDeviceAddressParseXML(address, &info->addr.pci) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -19625,7 +19618,7 @@ virDomainDeviceInfoCheckABIStability(virDomainDeviceInfo *src,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ((virDomainDeviceAddressType) src->type) {
|
switch (src->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
||||||
if (src->addr.pci.domain != dst->addr.pci.domain ||
|
if (src->addr.pci.domain != dst->addr.pci.domain ||
|
||||||
src->addr.pci.bus != dst->addr.pci.bus ||
|
src->addr.pci.bus != dst->addr.pci.bus ||
|
||||||
|
@ -2806,7 +2806,7 @@ virDomainDeviceInfoValidate(const virDomainDeviceDef *dev)
|
|||||||
if (!(info = virDomainDeviceGetInfo(dev)))
|
if (!(info = virDomainDeviceGetInfo(dev)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
switch ((virDomainDeviceAddressType) info->type) {
|
switch (info->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO:
|
||||||
|
@ -541,7 +541,7 @@ qemuBuildDeviceAddressProps(virJSONValue *props,
|
|||||||
const virDomainDef *domainDef,
|
const virDomainDef *domainDef,
|
||||||
const virDomainDeviceInfo *info)
|
const virDomainDeviceInfo *info)
|
||||||
{
|
{
|
||||||
switch ((virDomainDeviceAddressType) info->type) {
|
switch (info->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI: {
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI: {
|
||||||
g_autofree char *pciaddr = NULL;
|
g_autofree char *pciaddr = NULL;
|
||||||
g_autofree char *bus = qemuBuildDeviceAddressPCIGetBus(domainDef, info);
|
g_autofree char *bus = qemuBuildDeviceAddressPCIGetBus(domainDef, info);
|
||||||
@ -981,7 +981,7 @@ qemuBuildVirtioDevGetConfig(const virDomainDeviceDef *device,
|
|||||||
|
|
||||||
virBufferAdd(&buf, baseName, -1);
|
virBufferAdd(&buf, baseName, -1);
|
||||||
|
|
||||||
switch ((virDomainDeviceAddressType) info->type) {
|
switch (info->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
||||||
implName = "pci";
|
implName = "pci";
|
||||||
break;
|
break;
|
||||||
|
@ -954,6 +954,18 @@ qemuMonitorInitBalloonObjectPath(qemuMonitor *mon,
|
|||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
|
||||||
name = "virtio-balloon-ccw";
|
name = "virtio-balloon-ccw";
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UNASSIGNED:
|
||||||
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1479,7 +1479,7 @@ qemuValidateDomainDeviceDefAddress(const virDomainDeviceDef *dev,
|
|||||||
const virDomainDef *def,
|
const virDomainDef *def,
|
||||||
virQEMUCaps *qemuCaps)
|
virQEMUCaps *qemuCaps)
|
||||||
{
|
{
|
||||||
switch ((virDomainDeviceAddressType) info->type) {
|
switch (info->type) {
|
||||||
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
|
||||||
if (qemuValidateDomainDeviceDefZPCIAddress(info, qemuCaps) < 0)
|
if (qemuValidateDomainDeviceDefZPCIAddress(info, qemuCaps) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user