
On Thu, Jul 14, 2011 at 07:32:56AM -0600, Eric Blake wrote:
On 07/14/2011 03:42 AM, Daniel P. Berrange wrote:
It turns out that we've used internal-use flags before. See how libvirt.c filters out flags in both virDomainGetXMLDesc and virSecretGetValue if the flags are larger than 0xffff, so that it can start internal flags at 1<<16. Regarding the networking code and our discussions on whether we should split out a second internalFlags argument rather than cramming internal and external flags into a single parameter, I think we should be consistent.
The difference is that this was an internal impl detail not exposed in the public headers, so could be removed at any time.
Meanwhile, I've got a patch to libvirt.c; I think virDomainGetXMLDesc should reject an attempt to pass 1<<16, rather than silently ignore it.
No, that would not be a good idea, because libvirt.c is in the code path for the remote client, as well as the server side.
But we don't pass internal flags over the wire.
That is, the only time we use internal flags is from within the same executable, where we don't go through daemon/remote.c, and therefore don't re-feed the request through src/libvirt.c, therefore are not impacted by libvirt.c rejecting internal flags.
We don't want todo any flag filtering on the remote client side at all, since we can't expect the client & server to be on the same versions. Flag filtering can only be done after dispatch via the internal driver table, eg in QEMU, LXC, etc directly.
That would be a valid concern if we passed internal flags over the wire, but we don't.
I'm thinking about the case where a value we currently use for an internal flag, gets used for a public flag in the future. In that case, any client side checks for curent internal flags would be bogus. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|