mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-23 11:52:20 +00:00
virDomainHostdevCaps: 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
7bdab79e40
commit
c1afc835b0
@ -428,6 +428,8 @@ virDomainAuditHostdev(virDomainObj *vm, virDomainHostdevDef *hostdev,
|
|||||||
virt, reason, vmname, uuidstr, device);
|
virt, reason, vmname, uuidstr, device);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
VIR_WARN("Unexpected hostdev type while encoding audit message: %d",
|
VIR_WARN("Unexpected hostdev type while encoding audit message: %d",
|
||||||
hostdev->source.caps.type);
|
hostdev->source.caps.type);
|
||||||
|
@ -2616,7 +2616,7 @@ virDomainHostdevDefClear(virDomainHostdevDef *def)
|
|||||||
|
|
||||||
switch (def->mode) {
|
switch (def->mode) {
|
||||||
case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
|
case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
|
||||||
switch ((virDomainHostdevCapsType) def->source.caps.type) {
|
switch (def->source.caps.type) {
|
||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE:
|
||||||
VIR_FREE(def->source.caps.u.storage.block);
|
VIR_FREE(def->source.caps.u.storage.block);
|
||||||
break;
|
break;
|
||||||
@ -6502,7 +6502,7 @@ virDomainNetDefCoalesceFormatXML(virBuffer *buf,
|
|||||||
static int
|
static int
|
||||||
virDomainHostdevDefParseXMLCaps(xmlNodePtr node G_GNUC_UNUSED,
|
virDomainHostdevDefParseXMLCaps(xmlNodePtr node G_GNUC_UNUSED,
|
||||||
xmlXPathContextPtr ctxt,
|
xmlXPathContextPtr ctxt,
|
||||||
const char *type,
|
virDomainHostdevCapsType type,
|
||||||
virDomainHostdevDef *def)
|
virDomainHostdevDef *def)
|
||||||
{
|
{
|
||||||
/* @type is passed in from the caller rather than read from the
|
/* @type is passed in from the caller rather than read from the
|
||||||
@ -6513,18 +6513,7 @@ virDomainHostdevDefParseXMLCaps(xmlNodePtr node G_GNUC_UNUSED,
|
|||||||
* <hostdev>. (the functions we're going to call expect address
|
* <hostdev>. (the functions we're going to call expect address
|
||||||
* type to already be known).
|
* type to already be known).
|
||||||
*/
|
*/
|
||||||
if (!type) {
|
def->source.caps.type = type;
|
||||||
virReportError(VIR_ERR_XML_ERROR,
|
|
||||||
"%s", _("missing source address type"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((def->source.caps.type = virDomainHostdevCapsTypeFromString(type)) < 0) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("unknown host device source address type '%1$s'"),
|
|
||||||
type);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!virXPathNode("./source", ctxt)) {
|
if (!virXPathNode("./source", ctxt)) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
@ -6560,6 +6549,7 @@ virDomainHostdevDefParseXMLCaps(xmlNodePtr node G_GNUC_UNUSED,
|
|||||||
ctxt, &def->source.caps.u.net.ip) < 0)
|
ctxt, &def->source.caps.u.net.ip) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("address type='%1$s' not supported in hostdev interfaces"),
|
_("address type='%1$s' not supported in hostdev interfaces"),
|
||||||
@ -12920,6 +12910,7 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
virDomainHostdevDef *def;
|
virDomainHostdevDef *def;
|
||||||
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
||||||
g_autofree char *type = virXMLPropString(node, "type");
|
g_autofree char *type = virXMLPropString(node, "type");
|
||||||
|
unsigned int typeU;
|
||||||
|
|
||||||
ctxt->node = node;
|
ctxt->node = node;
|
||||||
|
|
||||||
@ -12940,7 +12931,12 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
|
case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
|
||||||
/* parse managed/mode/type, and the <source> element */
|
/* parse managed/mode/type, and the <source> element */
|
||||||
if (virDomainHostdevDefParseXMLCaps(node, ctxt, type, def) < 0)
|
if (virXMLPropEnum(node, "type",
|
||||||
|
virDomainHostdevCapsTypeFromString,
|
||||||
|
VIR_XML_PROP_REQUIRED, &typeU) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (virDomainHostdevDefParseXMLCaps(node, ctxt, typeU, def) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -14163,6 +14159,8 @@ virDomainHostdevMatchCaps(virDomainHostdevDef *a,
|
|||||||
return virDomainHostdevMatchCapsMisc(a, b);
|
return virDomainHostdevMatchCapsMisc(a, b);
|
||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
return virDomainHostdevMatchCapsNet(a, b);
|
return virDomainHostdevMatchCapsNet(a, b);
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -23486,6 +23484,7 @@ virDomainHostdevDefFormatCaps(virBuffer *buf,
|
|||||||
virBufferEscapeString(buf, "<interface>%s</interface>\n",
|
virBufferEscapeString(buf, "<interface>%s</interface>\n",
|
||||||
def->source.caps.u.net.ifname);
|
def->source.caps.u.net.ifname);
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("unexpected hostdev type %1$d"),
|
_("unexpected hostdev type %1$d"),
|
||||||
|
@ -336,7 +336,7 @@ typedef enum {
|
|||||||
} virDomainHostdevCapsType;
|
} virDomainHostdevCapsType;
|
||||||
|
|
||||||
struct _virDomainHostdevCaps {
|
struct _virDomainHostdevCaps {
|
||||||
int type; /* enum virDOmainHostdevCapsType */
|
virDomainHostdevCapsType type;
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
char *block;
|
char *block;
|
||||||
|
@ -309,6 +309,8 @@ static int virLXCCgroupSetupDeviceACL(virDomainDef *def,
|
|||||||
VIR_CGROUP_DEVICE_MKNOD, false) < 0)
|
VIR_CGROUP_DEVICE_MKNOD, false) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1804,6 +1804,7 @@ virLXCControllerSetupHostdevCaps(virDomainDef *vmDef,
|
|||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
return 0; /* case is handled in virLXCControllerMoveInterfaces */
|
return 0; /* case is handled in virLXCControllerMoveInterfaces */
|
||||||
|
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Unsupported host device mode %1$s"),
|
_("Unsupported host device mode %1$s"),
|
||||||
|
@ -3869,6 +3869,8 @@ lxcDomainAttachDeviceHostdevCapsLive(virLXCDriver *driver,
|
|||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
|
||||||
return lxcDomainAttachDeviceHostdevMiscLive(driver, vm, dev);
|
return lxcDomainAttachDeviceHostdevMiscLive(driver, vm, dev);
|
||||||
|
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Unsupported host device type %1$s"),
|
_("Unsupported host device type %1$s"),
|
||||||
@ -4299,6 +4301,8 @@ lxcDomainDetachDeviceHostdevCapsLive(virDomainObj *vm,
|
|||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
|
||||||
return lxcDomainDetachDeviceHostdevMiscLive(vm, dev);
|
return lxcDomainDetachDeviceHostdevMiscLive(vm, dev);
|
||||||
|
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Unsupported host device type %1$s"),
|
_("Unsupported host device type %1$s"),
|
||||||
|
@ -90,6 +90,7 @@ int virLXCPrepareHostDevices(virLXCDriver *driver,
|
|||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
|
||||||
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Unsupported hostdev type %1$s"),
|
_("Unsupported hostdev type %1$s"),
|
||||||
|
@ -2315,6 +2315,8 @@ virSecuritySELinuxSetHostdevCapsLabel(virSecurityManager *mgr,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
@ -2538,6 +2540,8 @@ virSecuritySELinuxRestoreHostdevCapsLabel(virSecurityManager *mgr,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
|
||||||
|
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST:
|
||||||
default:
|
default:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user