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(a)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