mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-06 17:17:56 +03:00
qemuMigrationCookieNetworkXMLFormat: Refactor XML formatting
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@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
592a9a859a
commit
84589ac004
@ -598,35 +598,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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user