conf: Format managed property of hostdev-pci ports correctly

The property is parsed using virTristateBoolTypeFromString() but
formatted as if it was a regular bool, which results in the
following incorrect conversion:

  BOOL_ABSENT -> managed='no'
  BOOL_YES    -> managed='yes'
  BOOL_NO     -> managed='yes'

Use the virTristateBoolTypeToString() helper to ensure the
setting can survive a roundtrip conversion.

Fixes: 4b4a981d60
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Andrea Bolognani 2022-03-24 19:07:40 +01:00
parent 77c638c3c7
commit 06f5c092b8
3 changed files with 18 additions and 2 deletions

View File

@ -384,8 +384,11 @@ virNetworkPortDefFormatBuf(virBuffer *buf,
break;
case VIR_NETWORK_PORT_PLUG_TYPE_HOSTDEV_PCI:
virBufferAsprintf(buf, " managed='%s'>\n",
def->plug.hostdevpci.managed ? "yes" : "no");
if (def->plug.hostdevpci.managed) {
virBufferAsprintf(buf, " managed='%s'",
virTristateBoolTypeToString(def->plug.hostdevpci.managed));
}
virBufferAddLit(buf, ">\n");
virBufferAdjustIndent(buf, 2);
if (def->plug.hostdevpci.driver)
virBufferEscapeString(buf, "<driver name='%s'/>\n",

View File

@ -0,0 +1,12 @@
<networkport>
<uuid>5d744f21-ba4a-4d6e-bdb2-30a35ff3207d</uuid>
<owner>
<name>memtest</name>
<uuid>d54df46f-1ab5-4a22-8618-4560ef5fac2c</uuid>
</owner>
<mac address='52:54:00:7b:35:93'/>
<plug type='hostdev-pci' managed='no'>
<driver name='vfio'/>
<address domain='0x0001' bus='0x02' slot='0x03' function='0x4'/>
</plug>
</networkport>

View File

@ -85,6 +85,7 @@ mymain(void)
DO_TEST("plug-bridge-mactbl");
DO_TEST("plug-direct");
DO_TEST("plug-hostdev-pci");
DO_TEST("plug-hostdev-pci-unmanaged");
DO_TEST("plug-network");
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;