On Wed, May 11, 2016 at 12:18:51 -0400, Laine Stump wrote:
This would previously be silently ignored.
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1319044
---
src/network/bridge_driver.c | 25 +++++++++++++++++++++++++
src/qemu/qemu_domain.c | 21 ++++++++++++++++-----
2 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index bef8a78..0fd2095 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -3126,6 +3126,20 @@ networkValidate(virNetworkDriverStatePtr driver,
def->name);
return -1;
}
+
+ if (def->forward.type == VIR_NETWORK_FORWARD_HOSTDEV) {
+ for (i = 0; i < def->nPortGroups; i++) {
+ if (def->portGroups[i].bandwidth) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("unsupported <bandwidth> element "
+ "in <portgroup name='%s'> of "
+ "network '%s' with forward
mode='%s'"),
+ def->portGroups[i].name, def->name,
+ virNetworkForwardTypeToString(def->forward.type));
+ return -1;
+ }
+ }
+ }
Okay this part gets called in networkDefineXML, networkCreateXML and
networkStartNetworkVirtual.
return 0;
}
@@ -4305,6 +4319,17 @@ networkAllocateActualDevice(virDomainDefPtr dom,
goto error;
}
}
+ if (virDomainNetGetActualBandwidth(iface)) {
+ /* bandwidth configuration via libvirt is not supported for
+ * hostdev network devices
+ */
+ if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("bandwidth settings are not supported "
+ "for hostdev interfaces"));
+ goto error;
+ }
+ }
if (netdef) {
netdef->connections++;
ACK to the code above.
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index f7356a2..4e32251 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2119,12 +2119,23 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator);
- if (dev->type == VIR_DOMAIN_DEVICE_NET &&
- dev->data.net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV &&
- !dev->data.net->model) {
- if (VIR_STRDUP(dev->data.net->model,
- qemuDomainDefaultNetModel(def, qemuCaps)) < 0)
+ if (dev->type == VIR_DOMAIN_DEVICE_NET) {
+ virDomainNetDefPtr net =
dev->data.net;
+
+ if (net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV && !net->model
&&
+ VIR_STRDUP(net->model, qemuDomainDefaultNetModel(def, qemuCaps)) < 0)
+ goto cleanup;
+
+ if (net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV &&
+ virDomainNetGetActualBandwidth(net)) {
+ /* bandwidth configuration via libvirt is not supported
+ * for hostdev network devices
+ */
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("bandwidth settings are not supported "
+ "for hostdev interfaces"));
goto cleanup;
NACK to this part. This makes vm configs that were previously accepted
vanish. This can only be a start-time check.