[libvirt] [PATCH 08/14] Store the interface vlan number in the domain state
Daniel P. Berrange
berrange at redhat.com
Mon Jul 20 16:26:54 UTC 2009
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
Am I right in thinking we only need to preserve this info so that
we can figure out the next free VLAN number for hot-plug ?
> ---
> src/domain_conf.c | 12 ++++++++++++
> src/domain_conf.h | 1 +
> src/qemu_conf.c | 7 +++++--
> 3 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/src/domain_conf.c b/src/domain_conf.c
> index 2b4fe90..cce863c 100644
> --- a/src/domain_conf.c
> +++ b/src/domain_conf.c
> @@ -954,6 +954,7 @@ virDomainNetDefParseXML(virConnectPtr conn,
> char *internal = NULL;
> char *nic_name = NULL;
> char *hostnet_name = NULL;
> + char *vlan = NULL;
>
> if (VIR_ALLOC(def) < 0) {
> virReportOOMError(conn);
> @@ -1023,6 +1024,7 @@ virDomainNetDefParseXML(virConnectPtr conn,
> xmlStrEqual(cur->name, BAD_CAST "state")) {
> nic_name = virXMLPropString(cur, "nic");
> hostnet_name = virXMLPropString(cur, "hostnet");
> + vlan = virXMLPropString(cur, "vlan");
> }
> }
> cur = cur->next;
> @@ -1038,6 +1040,13 @@ virDomainNetDefParseXML(virConnectPtr conn,
> def->hostnet_name = hostnet_name;
> nic_name = hostnet_name = NULL;
>
> + def->vlan = -1;
> + if (vlan && virStrToLong_i(vlan, NULL, 10, &def->vlan) < 0) {
> + virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Cannot parse <state> 'vlan' attribute"));
> + goto error;
> + }
I'm wondering if we shouldn't just add a virXMLPropInt() method
which would mean we wouldn't have to keep doing the virStrToLong
stuff throughout the XML parsing code.
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list