From 2630d222abd0f0604fce976dddeba89fe9dd4e84 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Wed, 13 Sep 2023 14:23:15 +0200 Subject: [PATCH] virDomainHostdevSubsysSCSIVHost: Convert 'protocol' field to proper enum type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert the field and adjust the XML parser to use virXMLPropEnum(). Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- src/conf/domain_conf.c | 19 ++++++------------- src/conf/domain_conf.h | 4 ++-- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ef5f02a23b..65b7b44ccb 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6095,24 +6095,17 @@ virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodePtr sourcenode, virDomainHostdevDef *def) { virDomainHostdevSubsysSCSIVHost *hostsrc = &def->source.subsys.u.scsi_host; - g_autofree char *protocol = NULL; g_autofree char *wwpn = NULL; - if (!(protocol = virXMLPropString(sourcenode, "protocol"))) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("Missing scsi_host subsystem protocol")); + + if (virXMLPropEnum(sourcenode, "protocol", + virDomainHostdevSubsysSCSIHostProtocolTypeFromString, + VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO, + &hostsrc->protocol) < 0) { return -1; } - if ((hostsrc->protocol = - virDomainHostdevSubsysSCSIHostProtocolTypeFromString(protocol)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Unknown scsi_host subsystem protocol '%1$s'"), - protocol); - return -1; - } - - switch ((virDomainHostdevSubsysSCSIHostProtocolType) hostsrc->protocol) { + switch (hostsrc->protocol) { case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST: if (!(wwpn = virXMLPropString(sourcenode, "wwpn"))) { virReportError(VIR_ERR_XML_ERROR, "%s", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5cce60420f..d6d0799f63 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -290,7 +290,7 @@ struct _virDomainHostdevSubsysMediatedDev { }; typedef enum { - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE = 0, VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST, VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST, @@ -310,7 +310,7 @@ typedef enum { VIR_ENUM_DECL(virDomainHostdevSubsysSCSIVHostModel); struct _virDomainHostdevSubsysSCSIVHost { - int protocol; /* enum virDomainHostdevSubsysSCSIHostProtocolType */ + virDomainHostdevSubsysSCSIHostProtocolType protocol; char *wwpn; virDomainHostdevSubsysSCSIVHostModelType model; };