1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

virDomainLoaderDefParseXML: Allow loader path to be NULL

Except not really. At least for now.

In the future, the firmware will be selected automagically.
Therefore, it makes no sense to require the pathname of a
specific firmware binary in the domain XML. But since it is not
implemented do not really allow the path to be NULL. Only move
code around to prepare it for further expansion.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Michal Privoznik 2019-02-25 11:31:17 +01:00
parent 849a0cfef1
commit cdd592553a
2 changed files with 30 additions and 3 deletions

View File

@ -283,7 +283,9 @@
</choice>
</attribute>
</optional>
<ref name="absFilePath"/>
<optional>
<ref name="absFilePath"/>
</optional>
</element>
</optional>
<optional>

View File

@ -6590,6 +6590,22 @@ virDomainDefMemtuneValidate(const virDomainDef *def)
}
static int
virDomainDefOSValidate(const virDomainDef *def)
{
if (!def->os.loader)
return 0;
if (!def->os.loader->path) {
virReportError(VIR_ERR_XML_DETAIL, "%s",
_("no loader path specified"));
return -1;
}
return 0;
}
static int
virDomainDefValidateInternal(const virDomainDef *def)
{
@ -6628,6 +6644,9 @@ virDomainDefValidateInternal(const virDomainDef *def)
if (virDomainDefMemtuneValidate(def) < 0)
return -1;
if (virDomainDefOSValidate(def) < 0)
return -1;
return 0;
}
@ -18242,6 +18261,9 @@ virDomainLoaderDefParseXML(xmlNodePtr node,
type_str = virXMLPropString(node, "type");
loader->path = (char *) xmlNodeGetContent(node);
if (STREQ_NULLABLE(loader->path, ""))
VIR_FREE(loader->path);
if (readonly_str &&
(loader->readonly = virTristateBoolTypeFromString(readonly_str)) <= 0) {
virReportError(VIR_ERR_XML_DETAIL,
@ -26985,9 +27007,12 @@ virDomainLoaderDefFormat(virBufferPtr buf,
if (loader->secure)
virBufferAsprintf(buf, " secure='%s'", secure);
virBufferAsprintf(buf, " type='%s'>", type);
virBufferAsprintf(buf, " type='%s'", type);
virBufferEscapeString(buf, "%s</loader>\n", loader->path);
if (loader->path)
virBufferEscapeString(buf, ">%s</loader>\n", loader->path);
else
virBufferAddLit(buf, "/>\n");
if (loader->nvram || loader->templt) {
virBufferAddLit(buf, "<nvram");
virBufferEscapeString(buf, " template='%s'", loader->templt);