[libvirt] [PATCH 4/6] Revert "conf: support host-side IP/route information in <interface>"

Ján Tomko jtomko at redhat.com
Mon Jun 27 11:01:33 UTC 2016


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




More information about the libvir-list mailing list