bandwidth: Create format functions

This commit is contained in:
Michal Privoznik 2011-07-22 16:07:26 +02:00 committed by Daniel Veillard
parent e2ed67a8b6
commit aaa98b08ff
5 changed files with 82 additions and 0 deletions

View File

@ -8855,6 +8855,9 @@ virDomainNetDefFormat(virBufferPtr buf,
virBufferAddLit(buf, " </tune>\n");
}
if (virBandwidthDefFormat(buf, def->bandwidth, " ") < 0)
return -1;
if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
return -1;

View File

@ -1329,6 +1329,9 @@ char *virNetworkDefFormat(const virNetworkDefPtr def)
if (virNetworkDNSDefFormat(&buf, def->dns) < 0)
goto error;
if (virBandwidthDefFormat(&buf, def->bandwidth, " ") < 0)
goto error;
for (ii = 0; ii < def->nips; ii++) {
if (virNetworkIpDefFormat(&buf, &def->ips[ii]) < 0)
goto error;

View File

@ -710,6 +710,7 @@ nlComm;
# network.h
virBandwidthDefFormat;
virBandwidthDefFree;
virBandwidthDefParseNode;
virSocketAddrBroadcast;

View File

@ -1030,3 +1030,75 @@ virBandwidthDefFree(virBandwidthPtr def)
VIR_FREE(def->out);
VIR_FREE(def);
}
static int
virBandwidthChildDefFormat(virBufferPtr buf,
virRatePtr def,
const char *elem_name)
{
if (!buf || !def || !elem_name)
return -1;
if (def->average) {
virBufferAsprintf(buf, "<%s average='%llu'", elem_name, def->average);
if (def->peak)
virBufferAsprintf(buf, " peak='%llu'", def->peak);
if (def->burst)
virBufferAsprintf(buf, " burst='%llu'", def->burst);
virBufferAddLit(buf, "/>\n");
}
return 0;
}
/**
* virBandwidthDefFormat:
* @buf: Buffer to print to
* @def: Data source
* @indent: prepend all lines printed with this
*
* Formats bandwidth and prepend each line with @indent.
* Passing NULL to @indent is equivalent passing "".
*
* Returns 0 on success, else -1.
*/
int
virBandwidthDefFormat(virBufferPtr buf,
virBandwidthPtr def,
const char *indent)
{
int ret = -1;
if (!buf)
goto cleanup;
if (!def) {
ret = 0;
goto cleanup;
}
if (!indent)
indent = "";
virBufferAsprintf(buf, "%s<bandwidth>\n", indent);
if (def->in) {
virBufferAsprintf(buf, "%s ", indent);
if (virBandwidthChildDefFormat(buf, def->in, "inbound") < 0)
goto cleanup;
}
if (def->out) {
virBufferAsprintf(buf, "%s ", indent);
if (virBandwidthChildDefFormat(buf, def->out, "outbound") < 0)
goto cleanup;
}
virBufferAsprintf(buf, "%s</bandwidth>\n", indent);
ret = 0;
cleanup:
return ret;
}

View File

@ -152,4 +152,7 @@ virVirtualPortProfileFormat(virBufferPtr buf,
virBandwidthPtr virBandwidthDefParseNode(xmlNodePtr node);
void virBandwidthDefFree(virBandwidthPtr def);
int virBandwidthDefFormat(virBufferPtr buf,
virBandwidthPtr def,
const char *indent);
#endif /* __VIR_NETWORK_H__ */