[libvirt] [libvirt-designer PATCHv3 8/9] Implement gvir_designer_domain_add_smartcard()

Michal Privoznik mprivozn at redhat.com
Tue Jun 4 17:10:42 UTC 2013


On 04.06.2013 16:33, Christophe Fergeau wrote:
> This setups smartcard redirection to the guest.
> I'm not yet fully sure what users could want to tweak there
> (there are various ways of setting up the smartcard redirection),
> so this code may need to be made more flexible.
> The current code is also not checking whether the hypervisor
> supports this kind of redirection or not.
> ---
>  examples/virtxml.c                         |  2 ++
>  libvirt-designer/libvirt-designer-domain.c | 36 ++++++++++++++++++++++++++++++
>  libvirt-designer/libvirt-designer-domain.h |  1 +
>  libvirt-designer/libvirt-designer.sym      |  1 +
>  4 files changed, 40 insertions(+)
> 
> diff --git a/examples/virtxml.c b/examples/virtxml.c
> index bd3bfb3..941c9a9 100644
> --- a/examples/virtxml.c
> +++ b/examples/virtxml.c
> @@ -650,6 +650,8 @@ main(int argc, char *argv[])
>          g_object_unref(gvir_designer_domain_add_usb_redir(domain, &error));
>          CHECK_ERROR;
>      }
> +    g_object_unref(gvir_designer_domain_add_smartcard(domain, &error));
> +    CHECK_ERROR;

Again, this should be optional in my opinion.

>  
>      g_object_unref(gvir_designer_domain_add_sound(domain, &error));
>      CHECK_ERROR;
> diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c
> index ae816e0..914ac39 100644
> --- a/libvirt-designer/libvirt-designer-domain.c
> +++ b/libvirt-designer/libvirt-designer-domain.c
> @@ -697,6 +697,42 @@ gvir_designer_domain_add_usb_redir(GVirDesignerDomain *design, GError **error)
>  }
>  
>  
> +/**
> + * gvir_designer_domain_add_smartcard:
> + * @design: (transfer none): the domain designer instance
> + * @error: return location for a #GError, or NULL
> + *
> + * Add a new virtual smartcard reader to @design. This will allow to
> + * share a smartcard reader between the guest and the host.
> + *
> + * Returns: (transfer full): the pointer to the new smartcard device
> + */
> +GVirConfigDomainSmartcard *
> +gvir_designer_domain_add_smartcard(GVirDesignerDomain *design, GError **error)
> +{
> +    /* FIXME: check if OS/hypervisor support smartcard, might need
> +     *        libosinfo improvements
> +     */
> +    GVirConfigDomainSmartcardPassthrough *smartcard;
> +    GVirConfigDomainChardevSourceSpiceVmc *vmc;
> +    GVirConfigDomainChardevSource *source;
> +
> +    g_return_val_if_fail(GVIR_DESIGNER_IS_DOMAIN(design), NULL);
> +    g_return_val_if_fail(!error_is_set(error), NULL);
> +
> +    smartcard = gvir_config_domain_smartcard_passthrough_new();
> +    vmc = gvir_config_domain_chardev_source_spicevmc_new();
> +    source = GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(vmc);
> +    gvir_config_domain_smartcard_passthrough_set_source(smartcard, source);
> +    g_object_unref(G_OBJECT(vmc));
> +
> +    gvir_config_domain_add_device(design->priv->config,
> +                                  GVIR_CONFIG_DOMAIN_DEVICE(smartcard));
> +
> +    return GVIR_CONFIG_DOMAIN_SMARTCARD(smartcard);
> +}
> +
> +
>  static void gvir_designer_domain_add_power_management(GVirDesignerDomain *design)
>  {
>      GVirConfigDomainPowerManagement *pm;
> diff --git a/libvirt-designer/libvirt-designer-domain.h b/libvirt-designer/libvirt-designer-domain.h
> index 981fd2e..643e3bf 100644
> --- a/libvirt-designer/libvirt-designer-domain.h
> +++ b/libvirt-designer/libvirt-designer-domain.h
> @@ -135,6 +135,7 @@ GVirConfigDomainInterface *gvir_designer_domain_add_interface_network(GVirDesign
>  GVirConfigDomainGraphics *gvir_designer_domain_add_graphics(GVirDesignerDomain *design,
>                                                              GVirDesignerDomainGraphics type,
>                                                              GError **error);
> +GVirConfigDomainSmartcard *gvir_designer_domain_add_smartcard(GVirDesignerDomain *design, GError **error);
>  GVirConfigDomainSound *gvir_designer_domain_add_sound(GVirDesignerDomain *design, GError **error);
>  GVirConfigDomainRedirdev *gvir_designer_domain_add_usb_redir(GVirDesignerDomain *design, GError **error);
>  
> diff --git a/libvirt-designer/libvirt-designer.sym b/libvirt-designer/libvirt-designer.sym
> index 2894dee..da2cad6 100644
> --- a/libvirt-designer/libvirt-designer.sym
> +++ b/libvirt-designer/libvirt-designer.sym
> @@ -22,6 +22,7 @@ LIBVIRT_DESIGNER_0.0.2 {
>  	gvir_designer_domain_add_floppy_device;
>  	gvir_designer_domain_add_graphics;
>  	gvir_designer_domain_add_interface_network;
> +	gvir_designer_domain_add_smartcard;
>  	gvir_designer_domain_add_sound;
>  	gvir_designer_domain_add_usb_redir;
>  
> 




More information about the libvir-list mailing list