[libvirt] [PATCH 4/7] bandwidth: Create format functions
Laine Stump
laine at laine.org
Thu Jul 21 06:36:41 UTC 2011
On 07/18/2011 04:05 PM, Michal Privoznik wrote:
> ---
> src/conf/domain_conf.c | 3 ++
> src/conf/network_conf.c | 3 ++
> src/libvirt_private.syms | 1 +
> src/util/network.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++
> src/util/network.h | 4 ++
> 5 files changed, 83 insertions(+), 0 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 0d8c7e7..7bc6c1a 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -8839,6 +8839,9 @@ virDomainNetDefFormat(virBufferPtr buf,
> virBufferAddLit(buf, "</tune>\n");
> }
>
> + if (virBandwidrhDefFormat(buf,&def->bandwidth, " ")< 0)
Why the strange spelling here? ("Bandwidrh")? I'm guessing it's a typo
(since r and t are right next to each other); fortunately you're
consistent about it, and have committed the same typo everywhere :-)
ACK with the typo fixed (although as I said in an earlier patch, I think
several of these can be combined into one)
> + return -1;
> +
> if (virDomainDeviceInfoFormat(buf,&def->info, flags)< 0)
> return -1;
>
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index c9929e2..43145b1 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -1093,6 +1093,9 @@ char *virNetworkDefFormat(const virNetworkDefPtr def)
> if (virNetworkDNSDefFormat(&buf, def->dns)< 0)
> goto error;
>
> + if (virBandwidrhDefFormat(&buf,&def->bandwidth, " ")< 0)
> + goto error;
> +
> for (ii = 0; ii< def->nips; ii++) {
> if (virNetworkIpDefFormat(&buf,&def->ips[ii])< 0)
> goto error;
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 12db3d7..1cc9bca 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -700,6 +700,7 @@ nlComm;
>
>
> # network.h
> +virBandwidrhDefFormat;
> virBandwidthDefParseNode;
> virSocketAddrBroadcast;
> virSocketAddrBroadcastByPrefix;
> diff --git a/src/util/network.c b/src/util/network.c
> index ce949c7..58c0492 100644
> --- a/src/util/network.c
> +++ b/src/util/network.c
> @@ -786,3 +786,75 @@ virBandwidthDefParseNode(xmlNodePtr node, virBandwidthPtr def)
> cleanup:
> return ret;
> }
> +
> +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='%lu'", elem_name, def->average);
> +
> + if (def->peak)
> + virBufferAsprintf(buf, " peak='%lu'", def->peak);
> +
> + if (def->burst)
> + virBufferAsprintf(buf, " burst='%lu'", def->burst);
> + virBufferAddLit(buf, "/>\n");
> + }
> +
> + return 0;
> +}
> +
> +/**
> + * virBandwidrhDefFormat:
> + * @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
> +virBandwidrhDefFormat(virBufferPtr buf,
> + virBandwidthPtr def,
> + const char *indent)
> +{
> + int ret = -1;
> +
> + if (!buf || !def)
> + goto cleanup;
> +
> + if (!indent)
> + indent = "";
> +
> + if (!def->in.average&& !def->out.average) {
> + ret = 0;
> + goto cleanup;
> + }
> +
> + virBufferAsprintf(buf, "%s<bandwidth>\n", indent);
> + if (def->in.average) {
> + virBufferAsprintf(buf, "%s ", indent);
> + if (virBandwidthChildDefFormat(buf,&def->in, "inbound")< 0)
> + goto cleanup;
> + }
> +
> + if (def->out.average) {
> + virBufferAsprintf(buf, "%s ", indent);
> + if (virBandwidthChildDefFormat(buf,&def->out, "outbound")< 0)
> + goto cleanup;
> + }
> +
> + virBufferAsprintf(buf, "%s</bandwidth>\n", indent);
> +
> + ret = 0;
> +
> +cleanup:
> + return ret;
> +}
> diff --git a/src/util/network.h b/src/util/network.h
> index 54f7aad..98e3082 100644
> --- a/src/util/network.h
> +++ b/src/util/network.h
> @@ -21,6 +21,7 @@
> # include<netdb.h>
> # include<netinet/in.h>
> # include "xml.h"
> +# include "buf.h"
>
> typedef struct {
> union {
> @@ -106,4 +107,7 @@ int virSocketAddrPrefixToNetmask(unsigned int prefix,
> int family);
>
> int virBandwidthDefParseNode(xmlNodePtr node, virBandwidthPtr def);
> +int virBandwidrhDefFormat(virBufferPtr buf,
> + virBandwidthPtr def,
> + const char *indent);
> #endif /* __VIR_NETWORK_H__ */
More information about the libvir-list
mailing list