[PATCH 1/2] hyperv: fix flags passed to virDomainDefParseString()
This function expects flags that are bitwise-or values of the VIR_DOMAIN_DEF_PARSE_* constants, but we were passing two flags that were not part of this flag set: - 1 < VIR_DOMAIN_VIRT_HYPERV - VIR_DOMAIN_XML_INACTIVE Replace VIR_DOMAIN_XML_INACTIVE with VIR_DOMAIN_DEF_PARSE_INACTIVE (which fortunately happens to be the exact same value). Remove flag "1 < VIR_DOMAIN_VIRT_HYPERV", which turns out to the the same value as the flag VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION, which seems unnecessary and undesirable here. Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> --- src/hyperv/hyperv_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index b01b4919fe..8832769c7b 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -2937,7 +2937,7 @@ hypervDomainDefineXML(virConnectPtr conn, const char *xml) /* parse xml */ def = virDomainDefParseString(xml, priv->xmlopt, NULL, - 1 << VIR_DOMAIN_VIRT_HYPERV | VIR_DOMAIN_XML_INACTIVE); + VIR_DOMAIN_DEF_PARSE_INACTIVE); if (!def) goto error; -- 2.53.0
We already implement virDomainDefineXML(), so we can just implement one in terms of the other. Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> --- src/hyperv/hyperv_driver.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index 8832769c7b..a78e375c9d 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -2925,7 +2925,7 @@ hypervDomainUndefine(virDomainPtr domain) static virDomainPtr -hypervDomainDefineXML(virConnectPtr conn, const char *xml) +hypervDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags) { hypervPrivate *priv = conn->privateData; g_autofree char *hostname = hypervConnectGetHostname(conn); @@ -2934,10 +2934,14 @@ hypervDomainDefineXML(virConnectPtr conn, const char *xml) g_autoptr(hypervInvokeParamsList) params = NULL; g_autoptr(GHashTable) defineSystemParam = NULL; size_t i = 0; + unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE; + + virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); + + if (flags & VIR_DOMAIN_DEFINE_VALIDATE) + parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA; - /* parse xml */ - def = virDomainDefParseString(xml, priv->xmlopt, NULL, - VIR_DOMAIN_DEF_PARSE_INACTIVE); + def = virDomainDefParseString(xml, priv->xmlopt, NULL, parse_flags); if (!def) goto error; @@ -3034,6 +3038,13 @@ hypervDomainDefineXML(virConnectPtr conn, const char *xml) } +static virDomainPtr +hypervDomainDefineXML(virConnectPtr conn, const char *xml) +{ + return hypervDomainDefineXMLFlags(conn, xml, 0); +} + + static int hypervDomainAttachDeviceFlags(virDomainPtr domain, const char *xml, unsigned int flags) { @@ -4099,6 +4110,7 @@ static virHypervisorDriver hypervHypervisorDriver = { .domainCreate = hypervDomainCreate, /* 0.9.5 */ .domainCreateWithFlags = hypervDomainCreateWithFlags, /* 0.9.5 */ .domainDefineXML = hypervDomainDefineXML, /* 7.1.0 */ + .domainDefineXMLFlags = hypervDomainDefineXMLFlags, /* 12.2.0 */ .domainUndefine = hypervDomainUndefine, /* 7.1.0 */ .domainUndefineFlags = hypervDomainUndefineFlags, /* 7.1.0 */ .domainAttachDevice = hypervDomainAttachDevice, /* 7.1.0 */ -- 2.53.0
participants (1)
-
Jonathon Jongsma