On 01/07/2012 08:05 AM, Eric Blake wrote:
On 01/06/2012 11:16 AM, Laine Stump wrote:
> This fixes
https://bugzilla.redhat.com/show_bug.cgi?id=638633
>
> Currently the qemu, xen, libxml, and uml drivers recognize the script
> parameter and do something with it (the uml driver only to report that
> it isn't supported). Those drivers have been updated to log a
> CONFIG_UNSUPPORTED error when a script is specified for an interface
> type that's inappropriate for that particular hypervisor.
>
> (NB: There was earlier discussion of solving this problem by adding a
> VALIDATE flag to all libvirt APIs that accept XML, which would cause
> the XML to be validated against the RNG files. One statement during
> that discussion was that the RNG shouldn't contain hypervisor-specific
> things, though, and a proper solution to this problem would require
> that (again, because a script for an interface of type "bridge" is
> accepted by xen, but not by qemu).
The idea for a VALIDATE flag is still independently useful,
Agreed.
but I agree
with your assessment that it would not fix this particular case, because
the .rng does not distinguish between hypervisor-specific restrictions.
> +++ b/src/qemu/qemu_domain.c
> @@ -1167,10 +1167,12 @@ void qemuDomainObjCheckNetTaint(struct qemud_driver *driver,
> virDomainNetDefPtr net,
> int logFD)
> {
> - if ((net->type == VIR_DOMAIN_NET_TYPE_ETHERNET&&
> - net->data.ethernet.script != NULL) ||
> - (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE&&
> - net->data.bridge.script != NULL))
> + /* script is only useful for NET_TYPE_ETHERNET (qemu) and
> + * NET_TYPE_BRIDGE (xen), but could be (incorrectly) specified for
> + * any interface type. In any case, it's adding user sauce into
> + * the soup, so it should taint the domain.
Unusual that the comment mentions xen from inside the qemu directory,
but the comment is accurate, and I don't know of any better place to
stick it.
Heh. I hadn't thought of that...
ACK.
Thanks. I just pushed it.