diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 7146b6fa15..9c0bb19fb9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -29503,14 +29503,20 @@ int
virDomainNetSetModelString(virDomainNetDefPtr net,
const char *model)
{
- VIR_FREE(net->modelstr);
- if ((net->model = virDomainNetModelTypeFromString(model)) >= 0)
- return 0;
+ size_t i;
+ VIR_FREE(net->modelstr);
net->model = VIR_DOMAIN_NET_MODEL_UNKNOWN;
if (!model)
return 0;
+ for (i = 0; i < ARRAY_CARDINALITY(virDomainNetModelTypeList); i++) {
+ if (STRCASEEQ(virDomainNetModelTypeList[i], model)) {
+ net->model = i;
+ return 0;
+ }
+ }
+
if (strspn(model, NET_MODEL_CHARS) < strlen(model)) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("Model name contains invalid characters"));
diff --git a/tests/qemuxml2argvdata/net-many-models.xml b/tests/qemuxml2argvdata/net-many-models.xml
index 2b8f9b18eb..40fc5de06c 100644
--- a/tests/qemuxml2argvdata/net-many-models.xml
+++ b/tests/qemuxml2argvdata/net-many-models.xml
@@ -21,7 +21,8 @@
-
+
+