[PATCH 08/20] qemuMigrationCookieNetworkXMLFormat: Refactor XML formatting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Use 'virXMLFormatElement' both for formating the whole <network> element
but also for formatting the <interface> subelements. This alows to
remove the crazy logic which was determining which element was already
formatted.

Additional simplification is achieved by switching to skipping the loop
using 'continue' rather than putting everything in a giant block.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/qemu/qemu_migration_cookie.c | 40 +++++++++++++-------------------
 1 file changed, 16 insertions(+), 24 deletions(-)

diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
index accf3c5efb..a888c0074c 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -601,35 +601,27 @@ static void
 qemuMigrationCookieNetworkXMLFormat(virBufferPtr buf,
                                     qemuMigrationCookieNetworkPtr optr)
 {
+    g_auto(virBuffer) interfaceBuf = VIR_BUFFER_INIT_CHILD(buf);
     size_t i;
-    bool empty = true;

     for (i = 0; i < optr->nnets; i++) {
+        g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
+        g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(&interfaceBuf);
+
         /* If optr->net[i].vporttype is not set, there is nothing to transfer */
-        if (optr->net[i].vporttype != VIR_NETDEV_VPORT_PROFILE_NONE) {
-            if (empty) {
-                virBufferAddLit(buf, "<network>\n");
-                virBufferAdjustIndent(buf, 2);
-                empty = false;
-            }
-            virBufferAsprintf(buf, "<interface index='%zu' vporttype='%s'",
-                              i, virNetDevVPortTypeToString(optr->net[i].vporttype));
-            if (optr->net[i].portdata) {
-                virBufferAddLit(buf, ">\n");
-                virBufferAdjustIndent(buf, 2);
-                virBufferEscapeString(buf, "<portdata>%s</portdata>\n",
-                                      optr->net[i].portdata);
-                virBufferAdjustIndent(buf, -2);
-                virBufferAddLit(buf, "</interface>\n");
-            } else {
-                virBufferAddLit(buf, "/>\n");
-            }
-        }
-    }
-    if (!empty) {
-        virBufferAdjustIndent(buf, -2);
-        virBufferAddLit(buf, "</network>\n");
+        if (optr->net[i].vporttype == VIR_NETDEV_VPORT_PROFILE_NONE)
+            continue;
+
+        virBufferAsprintf(&attrBuf, " index='%zu' vporttype='%s'",
+                          i, virNetDevVPortTypeToString(optr->net[i].vporttype));
+
+        virBufferEscapeString(&childBuf, "<portdata>%s</portdata>\n",
+                              optr->net[i].portdata);
+
+        virXMLFormatElement(&interfaceBuf, "interface", &attrBuf, &childBuf);
     }
+
+    virXMLFormatElement(buf, "network", NULL, &interfaceBuf);
 }


-- 
2.26.2




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux