From e80f10064e2290414d0b525a2b7505a84fee9f66 Mon Sep 17 00:00:00 2001 From: John Levon Date: Fri, 23 Jan 2009 01:48:47 +0000 Subject: [PATCH] parse IP address for bridge interfaces --- ChangeLog | 11 ++++++ src/domain_conf.c | 11 +++++- src/domain_conf.h | 1 + src/xend_internal.c | 15 +++++--- src/xm_internal.c | 5 +++ .../sexpr2xml-bridge-ipaddr.sexpr | 2 ++ .../sexpr2xmldata/sexpr2xml-bridge-ipaddr.xml | 34 +++++++++++++++++++ tests/sexpr2xmltest.c | 1 + .../xml2sexpr-bridge-ipaddr.sexpr | 1 + .../xml2sexprdata/xml2sexpr-bridge-ipaddr.xml | 30 ++++++++++++++++ tests/xml2sexprtest.c | 1 + 11 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.sexpr create mode 100644 tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.xml create mode 100644 tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr create mode 100644 tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.xml diff --git a/ChangeLog b/ChangeLog index 25e8d05cec..64d9196c16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Thu Jan 22 17:42:37 PST 2009 John Levon + + * src/domain_conf.c, src/domain_conf.h, src/xend_internal.c, + src/xm_internal.c: parse IP address for bridge interfaces + + * tests/sexpr2xmltest.c, tests/xml2sexprtest.c, + tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.sexpr, + tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.xml, + tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr, + tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.xml: add tests + Thu Jan 21 19:44:12 GMT 2009 Daniel P. Berrange Use the GNULIB random_r function diff --git a/src/domain_conf.c b/src/domain_conf.c index feb77cac92..30336d490f 100644 --- a/src/domain_conf.c +++ b/src/domain_conf.c @@ -289,6 +289,7 @@ void virDomainNetDefFree(virDomainNetDefPtr def) case VIR_DOMAIN_NET_TYPE_BRIDGE: VIR_FREE(def->data.bridge.brname); VIR_FREE(def->data.bridge.script); + VIR_FREE(def->data.bridge.ipaddr); break; } @@ -887,7 +888,8 @@ virDomainNetDefParseXML(virConnectPtr conn, address = virXMLPropString(cur, "address"); port = virXMLPropString(cur, "port"); } else if ((address == NULL) && - (def->type == VIR_DOMAIN_NET_TYPE_ETHERNET) && + (def->type == VIR_DOMAIN_NET_TYPE_ETHERNET || + def->type == VIR_DOMAIN_NET_TYPE_BRIDGE) && (xmlStrEqual(cur->name, BAD_CAST "ip"))) { address = virXMLPropString(cur, "address"); } else if ((ifname == NULL) && @@ -954,6 +956,10 @@ virDomainNetDefParseXML(virConnectPtr conn, def->data.bridge.script = script; script = NULL; } + if (address != NULL) { + def->data.bridge.ipaddr = address; + address = NULL; + } break; case VIR_DOMAIN_NET_TYPE_CLIENT: @@ -2889,6 +2895,9 @@ virDomainNetDefFormat(virConnectPtr conn, case VIR_DOMAIN_NET_TYPE_BRIDGE: virBufferEscapeString(buf, " \n", def->data.bridge.brname); + if (def->data.bridge.ipaddr) + virBufferVSprintf(buf, " \n", + def->data.bridge.ipaddr); if (def->data.bridge.script) virBufferEscapeString(buf, "