File libvirt-network_conf-Expose-virNetworkDefFormatInternal.patch of Package libvirt
From 17e7e622cb3ee9e9d92c442588600a4698fd2d62 Mon Sep 17 00:00:00 2001
Message-Id: <17e7e622cb3ee9e9d92c442588600a4698fd2d62@dist-git>
From: Michal Privoznik <mprivozn@redhat.com>
Date: Wed, 14 May 2014 16:12:15 +0200
Subject: [PATCH] network_conf: Expose virNetworkDefFormatInternal
https://bugzilla.redhat.com/show_bug.cgi?id=1064831
In the next patch I'm going to need the network format function that
takes virBuffer as argument. However, slightly change of name is more
appropriate then: virNetworkDefFormatBuf to match the rest of functions
that format an object to buffer.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
(cherry picked from commit e0a31274ec74fb2d77c40a489d26799c0965a198)
Conflicts:
src/conf/network_conf.c:
src/conf/network_conf.h: Both because the
ae757743dc9d5d9f9cf6a9105f5856b395819986 is not backported yet
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
src/conf/network_conf.c | 97 ++++++++++++++++++++++++++++--------------------
src/conf/network_conf.h | 3 ++
src/libvirt_private.syms | 1 +
3 files changed, 61 insertions(+), 40 deletions(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index bc9690e..26d1d57 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2065,24 +2065,26 @@ cleanup:
return ret;
}
-char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags)
+int
+virNetworkDefFormatBuf(virBufferPtr buf,
+ const virNetworkDefPtr def,
+ unsigned int flags)
{
- virBuffer buf = VIR_BUFFER_INITIALIZER;
- unsigned char *uuid;
+ const unsigned char *uuid;
char uuidstr[VIR_UUID_STRING_BUFLEN];
int ii, shortforward;
- virBufferAddLit(&buf, "<network");
+ virBufferAddLit(buf, "<network");
if (!(flags & VIR_NETWORK_XML_INACTIVE) && (def->connections > 0)) {
- virBufferAsprintf(&buf, " connections='%d'", def->connections);
+ virBufferAsprintf(buf, " connections='%d'", def->connections);
}
- virBufferAddLit(&buf, ">\n");
- virBufferAdjustIndent(&buf, 2);
- virBufferEscapeString(&buf, "<name>%s</name>\n", def->name);
+ virBufferAddLit(buf, ">\n");
+ virBufferAdjustIndent(buf, 2);
+ virBufferEscapeString(buf, "<name>%s</name>\n", def->name);
uuid = def->uuid;
virUUIDFormat(uuid, uuidstr);
- virBufferAsprintf(&buf, "<uuid>%s</uuid>\n", uuidstr);
+ virBufferAsprintf(buf, "<uuid>%s</uuid>\n", uuidstr);
if (def->forwardType != VIR_NETWORK_FORWARD_NONE) {
const char *dev = NULL;
@@ -2096,49 +2098,49 @@ char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags)
def->forwardType, def->name);
goto error;
}
- virBufferAddLit(&buf, "<forward");
- virBufferEscapeString(&buf, " dev='%s'", dev);
- virBufferAsprintf(&buf, " mode='%s'", mode);
+ virBufferAddLit(buf, "<forward");
+ virBufferEscapeString(buf, " dev='%s'", dev);
+ virBufferAsprintf(buf, " mode='%s'", mode);
if (def->forwardType == VIR_NETWORK_FORWARD_HOSTDEV) {
if (def->managed == 1)
- virBufferAddLit(&buf, " managed='yes'");
+ virBufferAddLit(buf, " managed='yes'");
else
- virBufferAddLit(&buf, " managed='no'");
+ virBufferAddLit(buf, " managed='no'");
}
shortforward = !(def->nForwardIfs || def->nForwardPfs
|| VIR_SOCKET_ADDR_VALID(&def->forwardAddrStart)
|| VIR_SOCKET_ADDR_VALID(&def->forwardAddrEnd)
|| def->forwardPortStart
|| def->forwardPortEnd);
- virBufferAsprintf(&buf, "%s>\n", shortforward ? "/" : "");
- virBufferAdjustIndent(&buf, 2);
+ virBufferAsprintf(buf, "%s>\n", shortforward ? "/" : "");
+ virBufferAdjustIndent(buf, 2);
if (def->forwardType == VIR_NETWORK_FORWARD_NAT) {
- if (virNetworkForwardNatDefFormat(&buf, def) < 0)
+ if (virNetworkForwardNatDefFormat(buf, def) < 0)
goto error;
}
/* For now, hard-coded to at most 1 forward.pfs */
if (def->nForwardPfs)
- virBufferEscapeString(&buf, "<pf dev='%s'/>\n",
+ virBufferEscapeString(buf, "<pf dev='%s'/>\n",
def->forwardPfs[0].dev);
if (def->nForwardIfs &&
(!def->nForwardPfs || !(flags & VIR_NETWORK_XML_INACTIVE))) {
for (ii = 0; ii < def->nForwardIfs; ii++) {
if (def->forwardType != VIR_NETWORK_FORWARD_HOSTDEV) {
- virBufferEscapeString(&buf, "<interface dev='%s'",
+ virBufferEscapeString(buf, "<interface dev='%s'",
def->forwardIfs[ii].device.dev);
if (!(flags & VIR_NETWORK_XML_INACTIVE) &&
(def->forwardIfs[ii].connections > 0)) {
- virBufferAsprintf(&buf, " connections='%d'",
+ virBufferAsprintf(buf, " connections='%d'",
def->forwardIfs[ii].connections);
}
- virBufferAddLit(&buf, "/>\n");
+ virBufferAddLit(buf, "/>\n");
}
else {
if (def->forwardIfs[ii].type == VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_PCI) {
- if (virDevicePCIAddressFormat(&buf,
+ if (virDevicePCIAddressFormat(buf,
def->forwardIfs[ii].device.pci,
true) < 0)
goto error;
@@ -2146,67 +2148,82 @@ char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags)
}
}
}
- virBufferAdjustIndent(&buf, -2);
+ virBufferAdjustIndent(buf, -2);
if (!shortforward)
- virBufferAddLit(&buf, "</forward>\n");
+ virBufferAddLit(buf, "</forward>\n");
}
if (def->forwardType == VIR_NETWORK_FORWARD_NONE ||
def->forwardType == VIR_NETWORK_FORWARD_NAT ||
def->forwardType == VIR_NETWORK_FORWARD_ROUTE) {
- virBufferAddLit(&buf, "<bridge");
+ virBufferAddLit(buf, "<bridge");
if (def->bridge)
- virBufferEscapeString(&buf, " name='%s'", def->bridge);
- virBufferAsprintf(&buf, " stp='%s' delay='%ld' />\n",
+ virBufferEscapeString(buf, " name='%s'", def->bridge);
+ virBufferAsprintf(buf, " stp='%s' delay='%ld' />\n",
def->stp ? "on" : "off",
def->delay);
} else if (def->forwardType == VIR_NETWORK_FORWARD_BRIDGE &&
def->bridge) {
- virBufferEscapeString(&buf, "<bridge name='%s' />\n", def->bridge);
+ virBufferEscapeString(buf, "<bridge name='%s' />\n", def->bridge);
}
if (def->mac_specified) {
char macaddr[VIR_MAC_STRING_BUFLEN];
virMacAddrFormat(&def->mac, macaddr);
- virBufferAsprintf(&buf, "<mac address='%s'/>\n", macaddr);
+ virBufferAsprintf(buf, "<mac address='%s'/>\n", macaddr);
}
if (def->domain)
- virBufferAsprintf(&buf, "<domain name='%s'/>\n", def->domain);
+ virBufferAsprintf(buf, "<domain name='%s'/>\n", def->domain);
- if (virNetworkDNSDefFormat(&buf, def->dns) < 0)
+ if (virNetworkDNSDefFormat(buf, def->dns) < 0)
goto error;
- if (virNetDevVlanFormat(&def->vlan, &buf) < 0)
+ if (virNetDevVlanFormat(&def->vlan, buf) < 0)
goto error;
- if (virNetDevBandwidthFormat(def->bandwidth, &buf) < 0)
+ if (virNetDevBandwidthFormat(def->bandwidth, buf) < 0)
goto error;
for (ii = 0; ii < def->nips; ii++) {
- if (virNetworkIpDefFormat(&buf, &def->ips[ii]) < 0)
+ if (virNetworkIpDefFormat(buf, &def->ips[ii]) < 0)
goto error;
}
- if (virNetDevVPortProfileFormat(def->virtPortProfile, &buf) < 0)
+ if (virNetDevVPortProfileFormat(def->virtPortProfile, buf) < 0)
goto error;
for (ii = 0; ii < def->nPortGroups; ii++)
- if (virPortGroupDefFormat(&buf, &def->portGroups[ii]) < 0)
+ if (virPortGroupDefFormat(buf, &def->portGroups[ii]) < 0)
goto error;
- virBufferAdjustIndent(&buf, -2);
- virBufferAddLit(&buf, "</network>\n");
+ virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</network>\n");
+
+ return 0;
+
+error:
+ return -1;
+}
+
+char *
+virNetworkDefFormat(const virNetworkDefPtr def,
+ unsigned int flags)
+{
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+ if (virNetworkDefFormatBuf(&buf, def, flags) < 0)
+ goto error;
if (virBufferError(&buf))
goto no_memory;
return virBufferContentAndReset(&buf);
- no_memory:
+no_memory:
virReportOOMError();
- error:
+error:
virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h
index e645adb..2c7de7f 100644
--- a/src/conf/network_conf.h
+++ b/src/conf/network_conf.h
@@ -287,6 +287,9 @@ virNetworkDefPtr virNetworkDefParseNode(xmlDocPtr xml,
xmlNodePtr root);
char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags);
+int virNetworkDefFormatBuf(virBufferPtr buf,
+ const virNetworkDefPtr def,
+ unsigned int flags);
static inline const char *
virNetworkDefForwardIf(const virNetworkDefPtr def, size_t n)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 7f5d3d7..f477d32 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -869,6 +869,7 @@ virNetworkConfigFile;
virNetworkConfigChangeSetup;
virNetworkDefCopy;
virNetworkDefFormat;
+virNetworkDefFormatBuf;
virNetworkDefFree;
virNetworkDefGetIpByIndex;
virNetworkDefParseFile;
--
1.9.3