提交 cdd59255 编写于 作者: M Michal Privoznik

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: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 849a0cfe
......@@ -283,7 +283,9 @@
</choice>
</attribute>
</optional>
<ref name="absFilePath"/>
<optional>
<ref name="absFilePath"/>
</optional>
</element>
</optional>
<optional>
......
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册