[libvirt] [PATCHv2 18/21] qemu: Implement the device parse callback and use it for interfaces

Michal Privoznik mprivozn at redhat.com
Thu Mar 7 16:35:28 UTC 2013


On 06.03.2013 16:38, Peter Krempa wrote:
> This patch implements the callback that is used to fill the qemu default
> network card into the XML if none is specified.
> 
> Libvirt assumes that the network card for qemu if none specified is the
> "rtl8139". Record this in the XML using the new callback to avoid user
> confusion.
> ---
>  src/qemu/qemu_conf.c   |  2 +-
>  src/qemu/qemu_domain.c | 25 +++++++++++++++++++++++++
>  src/qemu/qemu_domain.h |  1 +
>  3 files changed, 27 insertions(+), 1 deletion(-)
> 
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index ef592cd..b9b7357 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -555,7 +555,7 @@ virDomainXMLConfPtr
>  virQEMUDriverCreateXMLConf(void)
>  {
>      return virDomainXMLConfNew(&virQEMUDriverPrivateDataCallbacks,
> -                               NULL,
> +                               &virQEMUDriverDomainDefAdjustCallbacks,
>                                 &virQEMUDriverDomainXMLNamespace);
>  }
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 2be207f..02ef24e 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -646,6 +646,7 @@ qemuDomainDefNamespaceFormatXML(virBufferPtr buf,
>      return 0;
>  }
> 
> +
>  static const char *
>  qemuDomainDefNamespaceHref(void)
>  {
> @@ -661,6 +662,30 @@ virDomainXMLNamespace virQEMUDriverDomainXMLNamespace = {
>  };
> 
> 
> +static int
> +qemuDomainDeviceDefAdjust(virDomainDeviceDefPtr dev,
> +                          virDomainDefPtr def ATTRIBUTE_UNUSED,
> +                          virCapsPtr caps ATTRIBUTE_UNUSED)
> +{
> +    if (dev->type == VIR_DOMAIN_DEVICE_NET &&
> +        dev->data.net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV) {
> +        if (!dev->data.net->model &&
> +            !(dev->data.net->model = strdup("rtl8139")))
> +                goto no_memory;

This is unnecessary for this time. But I can live with it.

> +    }
> +    return 0;
> +
> +no_memory:
> +    virReportOOMError();
> +    return -1;
> +}
> +
> +
> +virDomainDefAdjustCallbacks virQEMUDriverDomainDefAdjustCallbacks = {
> +    .devices = qemuDomainDeviceDefAdjust,
> +};
> +
> +
>  static void
>  qemuDomainObjSaveJob(virQEMUDriverPtr driver, virDomainObjPtr obj)
>  {
> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
> index 3a12b45..05a9daf 100644
> --- a/src/qemu/qemu_domain.h
> +++ b/src/qemu/qemu_domain.h
> @@ -339,5 +339,6 @@ void qemuDomainCleanupRun(virQEMUDriverPtr driver,
> 
>  extern virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks;
>  extern virDomainXMLNamespace virQEMUDriverDomainXMLNamespace;
> +extern virDomainDefAdjustCallbacks virQEMUDriverDomainDefAdjustCallbacks;
> 
>  #endif /* __QEMU_DOMAIN_H__ */
> 




More information about the libvir-list mailing list