mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-12 14:41:29 +00:00
250435546a
virNetDevBandwidthSet() always clears all existing qdiscs and their subordinate filters before adding all the new qdiscs/filters. This is normally exactly what we want, but there is one case (the network driver) where the Qdisc added by virNetDevBandwidthSet() may already be in use by the nftables backend (which will add a rule to fix the checksum of dhcp packets); in that case, we *don't* want virNetDevBandwidthSet() to clear out the qdisc that was already added for nftables, and none of the bandwidth filters have been added yet, so there already aren't any "old" filters that need to be removed either - it is safe to just skip virNetDevBandwidthClear() in this case. To allow the network driver to set bandwidth without first clearing it, this patch adds the flag VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL to the virNetDevBandwidthSetFlags enum, and recognizes it in virNetDevBandwidthSet() - if the flag is set, then virNetDevBandwidth() will call virNetDevBandwidthClear() just as it always has. But if the flag isn't set it *won't* call virNetDevBandwidthClear(). As suggested above, VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL is set for all calls to virNetdevBandwidthSet() except for two places in the network driver. Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>