This reverts commit fe6a77898a38f491403a70cc49925a584101daee.
This feature was accidentally pushed in the feature freeze.
---
docs/formatdomain.html.in | 26 -------
docs/schemas/domaincommon.rng | 3 +-
src/conf/domain_conf.c | 101 ++++++---------------------
src/conf/domain_conf.h | 3 +-
tests/lxcxml2xmldata/lxc-ethernet-hostip.xml | 44 ------------
tests/lxcxml2xmltest.c | 1 -
6 files changed, 23 insertions(+), 155 deletions(-)
delete mode 100644 tests/lxcxml2xmldata/lxc-ethernet-hostip.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index bb1c079..2466df7 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -5012,32 +5012,6 @@ qemu-kvm -net nic,model=? /dev/null
definitions</a>. This is used by the LXC driver.
</p>
-<pre>
- ...
- <devices>
- <interface type='ethernet'>
- <b><source/></b>
- <b><ip address='192.168.123.1'
prefix='24'/></b>
- <b><ip address='10.0.0.10' prefix='24'
peer='192.168.122.5'/></b>
- <b><route family='ipv4' address='192.168.42.0'
prefix='24' gateway='192.168.123.4'/></b>
- <b><source/></b>
- ...
- </interface>
- ...
- </devices>
- ...
-</pre>
-
- <p>
- <span class="since">Since 2.0.0</span> network devices of
type
- "ethernet" can optionally be provided one or more IP addresses
- and one or more routes to set on the <b>host</b> side of the
- network device. These are configured as subelements of
- the <code><source></code> element of the interface, and
- have the same attributes as the similarly named elements used to
- configure the guest side of the interface (described above).
- </p>
-
<h5><a name="elementVhostuser">vhost-user
interface</a></h5>
<p>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 964ff92..2d12da9 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -2142,7 +2142,7 @@
<interleave>
<optional>
<element name="source">
- <ref name="interface-ip-info"/>
+ <empty/>
</element>
</optional>
<ref name="interface-options"/>
@@ -2392,6 +2392,7 @@
<attribute name="dev">
<ref name="deviceName"/>
</attribute>
+ <empty/>
</element>
</optional>
<optional>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 90d2eaa..3a81f7e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1798,7 +1798,6 @@ virDomainNetDefClear(virDomainNetDefPtr def)
VIR_FREE(def->ifname_guest_actual);
virNetDevIPInfoClear(&def->guestIP);
- virNetDevIPInfoClear(&def->hostIP);
virDomainDeviceInfoClear(&def->info);
VIR_FREE(def->filter);
@@ -4609,23 +4608,6 @@ virDomainRedirdevDefValidate(const virDomainDef *def,
static int
-virDomainNetDefValidate(const virDomainNetDef *net)
-{
- if ((net->hostIP.nroutes || net->hostIP.nips) &&
- net->type != VIR_DOMAIN_NET_TYPE_ETHERNET) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("Invalid attempt to set network interface "
- "host-side IP route and/or address info on "
- "interface of type '%s'. This is only supported
"
- "on interfaces of type 'ethernet'"),
- virDomainNetTypeToString(net->type));
- return -1;
- }
- return 0;
-}
-
-
-static int
virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev,
const virDomainDef *def)
{
@@ -4636,11 +4618,9 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev,
case VIR_DOMAIN_DEVICE_REDIRDEV:
return virDomainRedirdevDefValidate(def, dev->data.redirdev);
- case VIR_DOMAIN_DEVICE_NET:
- return virDomainNetDefValidate(dev->data.net);
-
case VIR_DOMAIN_DEVICE_LEASE:
case VIR_DOMAIN_DEVICE_FS:
+ case VIR_DOMAIN_DEVICE_NET:
case VIR_DOMAIN_DEVICE_INPUT:
case VIR_DOMAIN_DEVICE_SOUND:
case VIR_DOMAIN_DEVICE_VIDEO:
@@ -9009,15 +8989,6 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
cur = node->children;
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
- if (xmlStrEqual(cur->name, BAD_CAST "source")) {
- xmlNodePtr tmpnode = ctxt->node;
-
- ctxt->node = cur;
- if (virDomainNetIPInfoParseXML(_("interface host IP"),
- ctxt, &def->hostIP) < 0)
- goto error;
- ctxt->node = tmpnode;
- }
if (!macaddr && xmlStrEqual(cur->name, BAD_CAST "mac"))
{
macaddr = virXMLPropString(cur, "address");
} else if (!network &&
@@ -20721,7 +20692,6 @@ virDomainNetDefFormat(virBufferPtr buf,
{
unsigned int actualType = virDomainNetGetActualType(def);
bool publicActual = false;
- int sourceLines = 0;
const char *typeStr;
virDomainHostdevDefPtr hostdef = NULL;
char macstr[VIR_MAC_STRING_BUFLEN];
@@ -20791,7 +20761,15 @@ virDomainNetDefFormat(virBufferPtr buf,
def->data.network.name);
virBufferEscapeString(buf, " portgroup='%s'",
def->data.network.portgroup);
- sourceLines++;
+ virBufferAddLit(buf, "/>\n");
+
+ /* ONLY for internal status storage - format the ActualNetDef
+ * as a subelement of <interface> so that no persistent config
+ * data is overwritten.
+ */
+ if ((flags & VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET) &&
+ (virDomainActualNetDefFormat(buf, def, flags) < 0))
+ return -1;
break;
case VIR_DOMAIN_NET_TYPE_ETHERNET:
@@ -20805,16 +20783,13 @@ virDomainNetDefFormat(virBufferPtr buf,
virBufferAsprintf(buf, " mode='%s'",
def->data.vhostuser->data.nix.listen ?
"server" : "client");
- sourceLines++;
+ virBufferAddLit(buf, "/>\n");
}
break;
case VIR_DOMAIN_NET_TYPE_BRIDGE:
- if (def->data.bridge.brname) {
- virBufferEscapeString(buf, "<source bridge='%s'",
- def->data.bridge.brname);
- sourceLines++;
- }
+ virBufferEscapeString(buf, "<source
bridge='%s'/>\n",
+ def->data.bridge.brname);
break;
case VIR_DOMAIN_NET_TYPE_SERVER:
@@ -20829,27 +20804,25 @@ virDomainNetDefFormat(virBufferPtr buf,
virBufferAsprintf(buf, "<source port='%d'",
def->data.socket.port);
}
- sourceLines++;
- if (def->type != VIR_DOMAIN_NET_TYPE_UDP)
+ if (def->type != VIR_DOMAIN_NET_TYPE_UDP) {
+ virBufferAddLit(buf, "/>\n");
break;
+ }
virBufferAddLit(buf, ">\n");
- sourceLines++;
virBufferAdjustIndent(buf, 2);
virBufferAsprintf(buf, "<local address='%s'
port='%d'/>\n",
def->data.socket.localaddr,
def->data.socket.localport);
virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</source>\n");
break;
case VIR_DOMAIN_NET_TYPE_INTERNAL:
- if (def->data.internal.name) {
- virBufferEscapeString(buf, "<source name='%s'",
- def->data.internal.name);
- sourceLines++;
- }
+ virBufferEscapeString(buf, "<source name='%s'/>\n",
+ def->data.internal.name);
break;
case VIR_DOMAIN_NET_TYPE_DIRECT:
@@ -20857,7 +20830,7 @@ virDomainNetDefFormat(virBufferPtr buf,
def->data.direct.linkdev);
virBufferAsprintf(buf, " mode='%s'",
virNetDevMacVLanModeTypeToString(def->data.direct.mode));
- sourceLines++;
+ virBufferAddLit(buf, "/>\n");
break;
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
@@ -20872,44 +20845,12 @@ virDomainNetDefFormat(virBufferPtr buf,
break;
}
- /* if sourceLines == 0 - no <source> info at all so far
- * sourceLines == 1 - first line written, no terminating ">"
- * sourceLines > 1 - multiple lines, including subelements
- */
- if (def->hostIP.nips || def->hostIP.nroutes) {
- if (sourceLines == 0) {
- virBufferAddLit(buf, "<source>\n");
- sourceLines += 2;
- } else if (sourceLines == 1) {
- virBufferAddLit(buf, ">\n");
- sourceLines++;
- }
- virBufferAdjustIndent(buf, 2);
- if (virDomainNetIPInfoFormat(buf, &def->hostIP) < 0)
- return -1;
- virBufferAdjustIndent(buf, -2);
- }
- if (sourceLines == 1)
- virBufferAddLit(buf, "/>\n");
- else if (sourceLines > 1)
- virBufferAddLit(buf, "</source>\n");
-
if (virNetDevVlanFormat(&def->vlan, buf) < 0)
return -1;
if (virNetDevVPortProfileFormat(def->virtPortProfile, buf) < 0)
return -1;
if (virNetDevBandwidthFormat(def->bandwidth, buf) < 0)
return -1;
-
- /* ONLY for internal status storage - format the ActualNetDef
- * as a subelement of <interface> so that no persistent config
- * data is overwritten.
- */
- if (def->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
- (flags & VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET) &&
- (virDomainActualNetDefFormat(buf, def, flags) < 0))
- return -1;
-
}
if (virDomainNetIPInfoFormat(buf, &def->guestIP) < 0)
@@ -20918,7 +20859,6 @@ virDomainNetDefFormat(virBufferPtr buf,
virBufferEscapeString(buf, "<script path='%s'/>\n",
def->script);
virBufferEscapeString(buf, "<backenddomain name='%s'/>\n",
def->domain_name);
-
if (def->ifname &&
!((flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE) &&
(STRPREFIX(def->ifname, VIR_NET_GENERATED_PREFIX) ||
@@ -20926,7 +20866,6 @@ virDomainNetDefFormat(virBufferPtr buf,
/* Skip auto-generated target names for inactive config. */
virBufferEscapeString(buf, "<target dev='%s'/>\n",
def->ifname);
}
-
if (def->ifname_guest || def->ifname_guest_actual) {
virBufferAddLit(buf, "<guest");
/* Skip auto-generated target names for inactive config. */
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 5df4758..7c5cbd9 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -963,8 +963,7 @@ struct _virDomainNetDef {
} tune;
char *script;
char *domain_name; /* backend domain name */
- char *ifname; /* interface name on the host (<target dev='x'/>) */
- virNetDevIPInfo hostIP;
+ char *ifname;
char *ifname_guest_actual;
char *ifname_guest;
virNetDevIPInfo guestIP;
diff --git a/tests/lxcxml2xmldata/lxc-ethernet-hostip.xml
b/tests/lxcxml2xmldata/lxc-ethernet-hostip.xml
deleted file mode 100644
index ce455f7..0000000
--- a/tests/lxcxml2xmldata/lxc-ethernet-hostip.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<domain type='lxc'>
- <name>8675309</name>
- <uuid>e21987a5-e98e-9c99-0e35-803e4d9ad1fe</uuid>
- <memory unit='KiB'>1048576</memory>
- <currentMemory unit='KiB'>1048576</currentMemory>
- <vcpu placement='static'>1</vcpu>
- <resource>
- <partition>/machine</partition>
- </resource>
- <os>
- <type arch='x86_64'>exe</type>
- <init>/sbin/init</init>
- </os>
- <idmap>
- <uid start='0' target='100000' count='100000'/>
- <gid start='0' target='100000' count='100000'/>
- </idmap>
- <clock offset='utc'/>
- <on_poweroff>destroy</on_poweroff>
- <on_reboot>restart</on_reboot>
- <on_crash>restart</on_crash>
- <devices>
- <emulator>/usr/libexec/libvirt_lxc</emulator>
- <filesystem type='mount' accessmode='passthrough'>
- <source dir='/mach/8675309'/>
- <target dir='/'/>
- </filesystem>
- <interface type='ethernet'>
- <mac address='00:16:3e:0f:ef:8a'/>
- <source>
- <ip address='192.168.122.12' family='ipv4' prefix='24'
peer='192.168.122.1'/>
- <ip address='192.168.122.13' family='ipv4'
prefix='24'/>
- <route family='ipv4' address='0.0.0.0'
gateway='192.168.122.1'/>
- <route family='ipv4' address='192.168.124.0'
prefix='24' gateway='192.168.124.1'/>
- </source>
- <ip address='192.168.122.1' family='ipv4' prefix='32'
peer='192.168.122.12'/>
- <guest dev='eth2'/>
- </interface>
- <console type='pty'>
- <target type='lxc' port='0'/>
- </console>
- </devices>
- <seclabel type='none'/>
-</domain>
diff --git a/tests/lxcxml2xmltest.c b/tests/lxcxml2xmltest.c
index 2f7f779..1b16088 100644
--- a/tests/lxcxml2xmltest.c
+++ b/tests/lxcxml2xmltest.c
@@ -95,7 +95,6 @@ mymain(void)
DO_TEST("capabilities");
DO_TEST("sharenet");
DO_TEST("ethernet");
- DO_TEST("ethernet-hostip");
DO_TEST_FULL("filesystem-root", 0, false,
VIR_DOMAIN_DEF_PARSE_SKIP_OSTYPE_CHECKS);
--
2.7.3