actualBandwidth = virDomainNetGetActualBandwidth(net);
if (actualBandwidth) {
if (virNetDevSupportsBandwidth(actualType)) {
- if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0)
+ if (virDomainNetDefIsOvsport(net)) {
+ if (virNetDevOpenvswitchInterfaceSetQos(net->ifname, actualBandwidth,
+ def->uuid,
+ !virDomainNetTypeSharesHostView(net)) < 0)
+ goto cleanup;
+ } else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) < 0) {
goto cleanup;
+ }
} else {
VIR_WARN("setting bandwidth on interfaces of "
"type '%s' is not implemented yet",
bool inboundSpecified = false, outboundSpecified = false;
int actualType;
bool qosSupported = true;
+ bool ovsType = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
if (net) {
actualType = virDomainNetGetActualType(net);
qosSupported = virNetDevSupportsBandwidth(actualType);
+ ovsType = virDomainNetDefIsOvsport(net);
}
if (qosSupported && persistentNet) {
}
}
- if (virNetDevBandwidthSet(net->ifname, newBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0) {
+ if (ovsType) {
+ if (virNetDevOpenvswitchInterfaceSetQos(net->ifname, newBandwidth,
+ vm->def->uuid,
+ !virDomainNetTypeSharesHostView(net)) < 0) {
+ virErrorPtr orig_err;
+
+ virErrorPreserveLast(&orig_err);
+ ignore_value(virNetDevOpenvswitchInterfaceSetQos(net->ifname, newBandwidth,
+ vm->def->uuid,
+ !virDomainNetTypeSharesHostView(net)));
+ if (net->bandwidth) {
+ ignore_value(virDomainNetBandwidthUpdate(net,
+ net->bandwidth));
+ }
+ virErrorRestore(&orig_err);
+ goto endjob;
+ }
+ } else if (virNetDevBandwidthSet(net->ifname, newBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) < 0) {
virErrorPtr orig_err;
virErrorPreserveLast(&orig_err);
actualBandwidth = virDomainNetGetActualBandwidth(net);
if (actualBandwidth) {
if (virNetDevSupportsBandwidth(actualType)) {
- if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0)
+ if (virDomainNetDefIsOvsport(net)) {
+ if (virNetDevOpenvswitchInterfaceSetQos(net->ifname, actualBandwidth,
+ vm->def->uuid,
+ !virDomainNetTypeSharesHostView(net)) < 0)
+ goto cleanup;
+ } else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) < 0) {
goto cleanup;
+ }
} else {
VIR_WARN("setting bandwidth on interfaces of "
"type '%s' is not implemented yet",
const virNetDevBandwidth *newb = virDomainNetGetActualBandwidth(newdev);
if (newb) {
- if (virNetDevBandwidthSet(newdev->ifname, newb, false,
- !virDomainNetTypeSharesHostView(newdev)) < 0)
+ if (virDomainNetDefIsOvsport(newdev)) {
+ if (virNetDevOpenvswitchInterfaceSetQos(newdev->ifname, newb,
+ vm->def->uuid,
+ !virDomainNetTypeSharesHostView(newdev)) < 0)
+ goto cleanup;
+ } else if (virNetDevBandwidthSet(newdev->ifname, newb, false,
+ !virDomainNetTypeSharesHostView(newdev)) < 0) {
goto cleanup;
+ }
} else {
/*
* virNetDevBandwidthSet() doesn't clear any existing
if (!(charDevAlias = qemuAliasChardevFromDevAlias(net->info.alias)))
return -1;
- if (virDomainNetGetActualBandwidth(net) &&
- virNetDevSupportsBandwidth(virDomainNetGetActualType(net)) &&
- virNetDevBandwidthClear(net->ifname) < 0)
- VIR_WARN("cannot clear bandwidth setting for device : %s",
- net->ifname);
+ if (virNetDevSupportsBandwidth(virDomainNetGetActualType(net))) {
+ if (virDomainNetDefIsOvsport(net)) {
+ if (virNetDevOpenvswitchInterfaceClearQos(net->ifname, vm->def->uuid) < 0)
+ VIR_WARN("cannot clear bandwidth setting for ovs device : %s",
+ net->ifname);
+ } else if (virNetDevBandwidthClear(net->ifname) < 0) {
+ VIR_WARN("cannot clear bandwidth setting for device : %s",
+ net->ifname);
+ }
+ }
/* deactivate the tap/macvtap device on the host, which could also
* affect the parent device (e.g. macvtap passthrough mode sets
for (i = 0; i < def->nnets; i++) {
virDomainNetDef *net = def->nets[i];
vport = virDomainNetGetActualVirtPortProfile(net);
-
switch (virDomainNetGetActualType(net)) {
case VIR_DOMAIN_NET_TYPE_DIRECT:
ignore_value(virNetDevMacVLanDeleteWithVPortProfile(
else
VIR_WARN("Unable to release network device '%s'", NULLSTR(net->ifname));
}
+
+ if (virDomainNetDefIsOvsport(net) &&
+ virNetDevOpenvswitchInterfaceClearQos(net->ifname, vm->def->uuid) < 0) {
+ VIR_WARN("cannot clear bandwidth setting for ovs device : %s",
+ net->ifname);
+ }
}
retry: