[PATCH v5 02/11] conf: Rework SEV XML parse and format methods
Pavel Hrdina
phrdina at redhat.com
Tue Jul 20 14:07:18 UTC 2021
On Fri, Jul 16, 2021 at 11:44:26AM +0200, Boris Fiuczynski wrote:
> Make use of virDomainLaunchSecurity enum.
>
> Signed-off-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
> Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> ---
> src/conf/domain_conf.c | 108 ++++++++++++++++++++++++-----------------
> 1 file changed, 64 insertions(+), 44 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index f1d4ef021c..74254d505b 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -14732,40 +14732,50 @@ virDomainSEVDefParseXML(xmlNodePtr sevNode,
> &def->sectype) < 0)
> return NULL;
>
> - if (virXPathULongHex("string(./policy)", ctxt, &policy) < 0) {
> - virReportError(VIR_ERR_XML_ERROR, "%s",
> - _("failed to get launch security policy"));
> - return NULL;
> - }
> + switch ((virDomainLaunchSecurity) def->sectype) {
> + case VIR_DOMAIN_LAUNCH_SECURITY_SEV:
> + if (virXPathULongHex("string(./policy)", ctxt, &policy) < 0) {
> + virReportError(VIR_ERR_XML_ERROR, "%s",
> + _("failed to get launch security policy"));
> + return NULL;
> + }
>
> - /* the following attributes are platform dependent and if missing, we can
> - * autofill them from domain capabilities later
> - */
> - rc = virXPathUInt("string(./cbitpos)", ctxt, &def->cbitpos);
> - if (rc == 0) {
> - def->haveCbitpos = true;
> - } else if (rc == -2) {
> - virReportError(VIR_ERR_XML_ERROR, "%s",
> - _("Invalid format for launch security cbitpos"));
> - return NULL;
> - }
> + /* the following attributes are platform dependent and if missing, we can
> + * autofill them from domain capabilities later
> + */
> + rc = virXPathUInt("string(./cbitpos)", ctxt, &def->cbitpos);
> + if (rc == 0) {
> + def->haveCbitpos = true;
> + } else if (rc == -2) {
> + virReportError(VIR_ERR_XML_ERROR, "%s",
> + _("Invalid format for launch security cbitpos"));
> + return NULL;
> + }
>
> - rc = virXPathUInt("string(./reducedPhysBits)", ctxt,
> - &def->reduced_phys_bits);
> - if (rc == 0) {
> - def->haveReducedPhysBits = true;
> - } else if (rc == -2) {
> - virReportError(VIR_ERR_XML_ERROR, "%s",
> - _("Invalid format for launch security "
> - "reduced-phys-bits"));
> - return NULL;
> - }
> + rc = virXPathUInt("string(./reducedPhysBits)", ctxt,
> + &def->reduced_phys_bits);
> + if (rc == 0) {
> + def->haveReducedPhysBits = true;
> + } else if (rc == -2) {
> + virReportError(VIR_ERR_XML_ERROR, "%s",
> + _("Invalid format for launch security "
> + "reduced-phys-bits"));
> + return NULL;
> + }
>
> - def->policy = policy;
> - def->dh_cert = virXPathString("string(./dhCert)", ctxt);
> - def->session = virXPathString("string(./session)", ctxt);
> + def->policy = policy;
> + def->dh_cert = virXPathString("string(./dhCert)", ctxt);
> + def->session = virXPathString("string(./session)", ctxt);
>
> - return g_steal_pointer(&def);
> + return g_steal_pointer(&def);
> + case VIR_DOMAIN_LAUNCH_SECURITY_NONE:
> + case VIR_DOMAIN_LAUNCH_SECURITY_LAST:
> + default:
> + virReportError(VIR_ERR_XML_ERROR,
> + _("unsupported launch security type '%s'"),
> + virDomainLaunchSecurityTypeToString(def->sectype));
> + return NULL;
> + }
> }
>
>
> @@ -26856,28 +26866,38 @@ virDomainKeyWrapDefFormat(virBuffer *buf, virDomainKeyWrapDef *keywrap)
> static void
> virDomainSEVDefFormat(virBuffer *buf, virDomainSEVDef *sev)
> {
> + g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
> + g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
> +
> if (!sev)
> return;
>
> - virBufferAsprintf(buf, "<launchSecurity type='%s'>\n",
> + virBufferAsprintf(&attrBuf, " type='%s'",
> virDomainLaunchSecurityTypeToString(sev->sectype));
> - virBufferAdjustIndent(buf, 2);
>
> - if (sev->haveCbitpos)
> - virBufferAsprintf(buf, "<cbitpos>%d</cbitpos>\n", sev->cbitpos);
> + switch ((virDomainLaunchSecurity) sev->sectype) {
> + case VIR_DOMAIN_LAUNCH_SECURITY_SEV: {
No need for the braces, I'll drop it before pushing.
Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210720/c2678e2d/attachment-0001.sig>
More information about the libvir-list
mailing list