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(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org