diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_conf.c index c3e0f9f14a..fdd5b7faa6 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Red Hat, Inc. + * Copyright (C) 2009-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -285,7 +285,8 @@ virDomainClearNetBandwidth(virDomainObjPtr vm) for (i = 0; i < vm->def->nnets; i++) { type = virDomainNetGetActualType(vm->def->nets[i]); - if (virNetDevSupportBandwidth(type)) + if (virDomainNetGetActualBandwidth(vm->def->nets[i]) && + virNetDevSupportBandwidth(type)) virNetDevBandwidthClear(vm->def->nets[i]->ifname); } } diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 3adb21db8a..3a28dd55e3 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -4650,7 +4650,8 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm, actualType = virDomainNetGetActualType(detach); /* clear network bandwidth */ - if (virNetDevSupportBandwidth(actualType) && + if (virDomainNetGetActualBandwidth(detach) && + virNetDevSupportBandwidth(actualType) && virNetDevBandwidthClear(detach->ifname)) goto cleanup; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index f240d3bae5..1209609a9f 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2096,7 +2096,8 @@ networkStartNetworkVirtual(virNetworkObjPtr network) return 0; err5: - virNetDevBandwidthClear(network->def->bridge); + if (network->def->bandwidth) + virNetDevBandwidthClear(network->def->bridge); err4: if (!save_err) @@ -2142,7 +2143,8 @@ networkStartNetworkVirtual(virNetworkObjPtr network) static int networkShutdownNetworkVirtual(virNetworkObjPtr network) { - virNetDevBandwidthClear(network->def->bridge); + if (network->def->bandwidth) + virNetDevBandwidthClear(network->def->bridge); if (network->radvdPid > 0) { char *radvdpidbase; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 8691c7e8f1..51f3573f09 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1,7 +1,7 @@ /* * qemu_hotplug.c: QEMU device hotplug management * - * Copyright (C) 2006-2014 Red Hat, Inc. + * Copyright (C) 2006-2015 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange * * This library is free software; you can redistribute it and/or @@ -3750,7 +3750,8 @@ qemuDomainDetachNetDevice(virQEMUDriverPtr driver, goto cleanup; } - if (virNetDevSupportBandwidth(virDomainNetGetActualType(detach)) && + if (virDomainNetGetActualBandwidth(detach) && + virNetDevSupportBandwidth(virDomainNetGetActualType(detach)) && virNetDevBandwidthClear(detach->ifname) < 0) VIR_WARN("cannot clear bandwidth setting for device : %s", detach->ifname); diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c index fbd2a8ddc3..c8a90c8522 100644 --- a/src/util/virnetdevbandwidth.c +++ b/src/util/virnetdevbandwidth.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Red Hat, Inc. + * Copyright (C) 2009-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -268,6 +268,9 @@ virNetDevBandwidthClear(const char *ifname) int dummy; /* for ignoring the exit status */ virCommandPtr cmd = NULL; + if (!ifname) + return 0; + cmd = virCommandNew(TC); virCommandAddArgList(cmd, "qdisc", "del", "dev", ifname, "root", NULL); diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h index 4606a07526..de289dbe04 100644 --- a/src/util/virnetdevbandwidth.h +++ b/src/util/virnetdevbandwidth.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2013 Red Hat, Inc. + * Copyright (C) 2009-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -47,8 +47,7 @@ int virNetDevBandwidthSet(const char *ifname, virNetDevBandwidthPtr bandwidth, bool hierarchical_class) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; -int virNetDevBandwidthClear(const char *ifname) - ATTRIBUTE_NONNULL(1); +int virNetDevBandwidthClear(const char *ifname); int virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest, const virNetDevBandwidth *src) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;