libxl: allow only 'ethernet' and 'bridge' interfaces, allow script there

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.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This commit is contained in:
Marek Marczykowski-Górecki 2013-06-13 03:54:03 +02:00 committed by Jim Fehlig
parent 07966f6a8b
commit 2903197539

View File

@ -572,18 +572,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)
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;
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));
return -1;
}
}
return 0;