Signed-off-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx> --- Changes in v2: - rebase on 1.2.12+ - multiple devices support src/libxl/libxl_conf.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 4730585..b1131ea 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -815,6 +815,54 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, } } + if (def->ninputs) { +#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST + if (VIR_ALLOC_N(b_info->u.hvm.usbdevice_list, def->ninputs+1) < 0) + return -1; +#else + if (def->ninputs > 1) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("libxenlight supports only one input device")); + return -1; + } +#endif + for (i = 0; i < def->ninputs; i++) { + if (def->inputs[i]->bus != VIR_DOMAIN_INPUT_BUS_USB) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("libxenlight supports only USB input")); + return -1; + } + } + for (i = 0; i < def->ninputs; i++) { + switch (def->inputs[i]->type) { + case VIR_DOMAIN_INPUT_TYPE_MOUSE: +#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST + if (VIR_STRDUP(b_info->u.hvm.usbdevice_list[i], "mouse") < 0) + return -1; +#else + VIR_FREE(b_info->u.hvm.usbdevice); + if (VIR_STRDUP(b_info->u.hvm.usbdevice, "mouse") < 0) + return -1; +#endif + break; + case VIR_DOMAIN_INPUT_TYPE_TABLET: +#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST + if (VIR_STRDUP(b_info->u.hvm.usbdevice_list[i], "tablet") < 0) + return -1; +#else + VIR_FREE(b_info->u.hvm.usbdevice); + if (VIR_STRDUP(b_info->u.hvm.usbdevice, "tablet") < 0) + return -1; +#endif + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Unknown input device type")); + return -1; + } + } + } + /* * The following comment and calculation were taken directly from * libxenlight's internal function libxl_get_required_shadow_memory(): -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list