[libvirt] [PATCH v2 01/14] libxl: allow only 'ethernet' and 'bridge' interfaces, allow script there

Marek Marczykowski-Górecki marmarek at invisiblethingslab.com
Thu Jun 13 01:54:03 UTC 2013


Actually only those interface types are handled correctly so reject
others instead of ignoring settings (i.e. treating as bridge/ethernet
anyway).
Also allow <script/> in 'ethernet' (which should be the only
script-allowing type). Keep <script/> allowed in bridge to be compatible
with legacy 'xen' driver.

Changes in v2:
 - reject interfaces other than 'ethernet' or 'bridge'
 - change title to better match patch content (was "libxl: allow script
   for any network interface, not only bridge")
 - update description

Signed-off-by: Marek Marczykowski-Górecki <marmarek at invisiblethingslab.com>
---
 src/libxl/libxl_conf.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 90d563b..b9cb61e 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -563,18 +563,20 @@ libxlMakeNic(virDomainNetDefPtr l_nic, libxl_device_nic *x_nic)
     if (VIR_STRDUP(x_nic->ifname, l_nic->ifname) < 0)
         return -1;
 
-    if (l_nic->type == VIR_DOMAIN_NET_TYPE_BRIDGE) {
-        if (VIR_STRDUP(x_nic->bridge, l_nic->data.bridge.brname) < 0)
-            return -1;
-        if (VIR_STRDUP(x_nic->script, l_nic->script) < 0)
-            return -1;
-    } else {
-        if (l_nic->script) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("scripts are not supported on interfaces of type %s"),
-                           virDomainNetTypeToString(l_nic->type));
+    switch (l_nic->type) {
+        case VIR_DOMAIN_NET_TYPE_BRIDGE:
+            if (VIR_STRDUP(x_nic->bridge, l_nic->data.bridge.brname) < 0)
+                return -1;
+            /* fallthrough */
+        case VIR_DOMAIN_NET_TYPE_ETHERNET:
+            if (VIR_STRDUP(x_nic->script, l_nic->script) < 0)
+                return -1;
+            break;
+        default:
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                    _("libxenlight does not support network device type %s"),
+                    virDomainNetTypeToString(l_nic->type));
             return -1;
-        }
     }
 
     return 0;
-- 
1.8.1.4




More information about the libvir-list mailing list