On Mon, 2009-07-20 at 14:48 +0200, Daniel Veillard wrote:
On Mon, Jul 20, 2009 at 12:51:18PM +0100, Mark McLoughlin wrote:
> Currently, an interface's vlan number corresponds to its index in
> the table of network interfaces. That is no longer true when we
> allow devices to be removed.
>
> To fix this, we store the vlan number in the domain's state XML
> so that it survives libvirtd restarts.
>
> * src/domain_conf.h: add vlan number to virDomainNetDef
>
> * src/domain_conf.c: store it in XML as <state vlan='N'/>, defaulting
> to -1 if this is state saved by a previous version of libvirt
>
> * src/qemu_conf.c: assign vlan numbers before starting qemu
[...]
> @@ -3614,6 +3624,8 @@ virDomainNetDefFormat(virConnectPtr conn,
> virBufferEscapeString(buf, " nic='%s'",
def->nic_name);
> if (def->hostnet_name)
> virBufferEscapeString(buf, " hostnet='%s'",
def->hostnet_name);
> + if (def->vlan > 0)
> + virBufferVSprintf(buf, " vlan='%d'", def->vlan);
> virBufferAddLit(buf, "/>\n");
> }
shouldn't we do that only when doing 'internal' dump, otherwise there
is a risk to expose this at the public dump level, where adding it is a
completely different issue.
Well spotted, at first I thought you were right and I'd missed it ...
but all this code is within:
if ((flags & VIR_DOMAIN_XML_INTERNAL_STATUS) &&
(def->nic_name || def->hostnet_name)) {
which highlights another bug - I'm going to drop those checks, it
doesn't matter if we end up with an empty <state/> element
Cheers,
Mark.