
On Wed, Apr 17, 2019 at 04:33:54PM -0400, Laine Stump wrote:
On 4/17/19 1:19 PM, Daniel P. Berrangé wrote:
The virNetDevBandwidthParse method uses the interface type to decide whether to allow use of the "floor" parameter. Using the interface type is not convenient as callers may not have that available, but still wish to allow use of "floor".
Also, this is one of the things that gave rise to the distinction between actualType == NETWORK and actualType == BRIDGE, and this patch allows us to eliminate that (hopefully) without causing breakage.
Well sort of. If using a plain bridge virtual network you can't use floor - that's only valid for routed networks. Trying to enforce this at parse time is doomed though - you can only corrrectly report this at runtime as you need the context of the virtual network itself. This was already an issue when parsing the top level netdef - only the actual netdef had any better checking. I'm almost inclined to remove all the logic preventing "floor" at XML parse time and rely on runtime checks entirely.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 51aa48f421..0df3c2ed49 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11270,7 +11270,7 @@ virDomainActualNetDefParseXML(xmlNodePtr node, if (bandwidth_node && virNetDevBandwidthParse(&actual->bandwidth, bandwidth_node, - actual->type) < 0) + def->type == VIR_DOMAIN_NET_TYPE_NETWORK) < 0)
This bit here ^^^ doesn't compile, since def is undefined. You would need to check "parent->type" instead.
Should be "actual->type" in fact. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|