On 02/05/2018 04:28 PM, Daniel P. Berrangé wrote:
Currently the QEMU driver will call directly into the network driver
impl to modify network device bandwidth for interfaces with
type=network. This introduces a callback system to allow us to decouple
the QEMU driver from the network driver.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/conf/domain_conf.c | 35 ++++++++++++++++++++++++++++++++++-
src/conf/domain_conf.h | 22 +++++++++++++++++++++-
src/libvirt_private.syms | 2 ++
src/network/bridge_driver.c | 8 +++++---
src/network/bridge_driver.h | 24 ------------------------
src/qemu/qemu_driver.c | 5 ++---
6 files changed, 64 insertions(+), 32 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 1e3a83cf73..205f99618d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -28820,15 +28820,22 @@ virDomainNetTypeSharesHostView(const virDomainNetDef *net)
static virDomainNetAllocateActualDeviceImpl netAllocate;
static virDomainNetNotifyActualDeviceImpl netNotify;
static virDomainNetReleaseActualDeviceImpl netRelease;
+static virDomainNetBandwidthChangeAllowedImpl netBandwidthChangeAllowed;
+static virDomainNetBandwidthUpdateImpl netBandwidthUpdate;
+
void
virDomainNetSetDeviceImpl(virDomainNetAllocateActualDeviceImpl allocate,
virDomainNetNotifyActualDeviceImpl notify,
- virDomainNetReleaseActualDeviceImpl release)
+ virDomainNetReleaseActualDeviceImpl release,
+ virDomainNetBandwidthChangeAllowedImpl
bandwidthChangeAllowed,
+ virDomainNetBandwidthUpdateImpl bandwidthUpdate)
{
netAllocate = allocate;
netNotify = notify;
netRelease = release;
+ netBandwidthChangeAllowed = bandwidthChangeAllowed;
+ netBandwidthUpdate = bandwidthUpdate;
}
int
@@ -28870,3 +28877,29 @@ virDomainNetReleaseActualDevice(virDomainDefPtr dom,
return netRelease(dom, iface);
}
+
+bool
+virDomainNetBandwidthChangeAllowed(virDomainNetDefPtr iface,
+ virNetDevBandwidthPtr newBandwidth)
+{
+ if (!netBandwidthChangeAllowed) {
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("Network device release not available"));
"Network device bandwidth change not available" or something among those
lines.
+ return -1;
+ }
+
+ return netBandwidthChangeAllowed(iface, newBandwidth);
+}> +
+int
+virDomainNetBandwidthUpdate(virDomainNetDefPtr iface,
+ virNetDevBandwidthPtr newBandwidth)
+{
+ if (!netBandwidthUpdate) {
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("Network device release not available"));
Same here.
+ return -1;
+ }
Michal