[libvirt] [PATCH 06/10] linkstate: Add parsing code for new XML element
Eric Blake
eblake at redhat.com
Thu Aug 11 20:13:39 UTC 2011
On 08/11/2011 09:27 AM, Peter Krempa wrote:
> ---
> src/conf/domain_conf.c | 19 +++++++++++++++++++
> src/conf/domain_conf.h | 1 +
> 2 files changed, 20 insertions(+), 0 deletions(-)
This patch is useful, even without the new API.
> @@ -3077,6 +3081,14 @@ virDomainNetDefParseXML(virCapsPtr caps,
> }
> }
>
> + def->linkstate = VIR_LINK_STATE_DEFAULT;
> + if (linkstate != NULL) {
> + if (STREQ(linkstate, "down"))
> + def->linkstate = VIR_LINK_STATE_DOWN;
> + else
> + def->linkstate = VIR_LINK_STATE_UP;
Do we really want to convert all other strings to STATE_UP, or should we
specifically check for "up" and reject unknown strings?
> @@ -9019,6 +9032,12 @@ virDomainNetDefFormat(virBufferPtr buf,
> virBufferAddLit(buf, "</tune>\n");
> }
>
> +
> + if (def->linkstate == VIR_LINK_STATE_DOWN)
> + virBufferAddLit(buf, "<link state='down'/>\n");
> + if (def->linkstate == VIR_LINK_STATE_UP)
This could be 'else if', but not a big deal to micro-optimize.
> + virBufferAddLit(buf, "<link state='up'/>\n");
> +
> if (virBandwidthDefFormat(buf, def->bandwidth, " ")< 0)
> return -1;
>
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index abf9cbd..4655563 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -427,6 +427,7 @@ struct _virDomainNetDef {
> char *filter;
> virNWFilterHashTablePtr filterparams;
> virBandwidthPtr bandwidth;
> + unsigned int linkstate;
Why unsigned? As currently used, you could get away with a bool. Would
it be better to introduce a VIR_ENUM for link states, especially if we
ever think it might be worth adding other link states? (I know that some
10/100/1000 NIC hardware has a state representing autonegotiation, where
a remote end has been detected but where the link has not yet settled on
which speed to use, although I have no idea if that hardware state is
ever exposed to the userspace by the kernel, let alone something that
can be emulated). If you do use VIR_ENUM, then our convention has been
to use 'int', not 'unsigned int'.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list