On 12/16/19 5:46 PM, Cole Robinson wrote:
On 12/9/19 6:15 PM, Daniel Henrique Barboza wrote:
> Move smartcard validation being done by qemuBuildSmartcardCommandLine()
> to the existing qemuDomainSmartcardDefValidate() function. This
> function is called by qemuDomainDeviceDefValidate(), allowing smartcard
> validation in domain define time.
>
> Tests were adapted to consider the new caps being needed in
> this earlier stage.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413(a)gmail.com>
> ---
> src/qemu/qemu_command.c | 24 ------------------------
> src/qemu/qemu_domain.c | 37 +++++++++++++++++++++++++++++++++++++
> tests/qemuxml2xmltest.c | 16 +++++++++-------
> 3 files changed, 46 insertions(+), 31 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index efc70d6de9..116ed45a12 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -8271,24 +8271,10 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
>
> switch (smartcard->type) {
> case VIR_DOMAIN_SMARTCARD_TYPE_HOST:
> - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CCID_EMULATED)) {
> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> - _("this QEMU binary lacks smartcard host "
> - "mode support"));
> - return -1;
> - }
> -
> virBufferAddLit(&opt,
"ccid-card-emulated,backend=nss-emulated");
> break;
>
> case VIR_DOMAIN_SMARTCARD_TYPE_HOST_CERTIFICATES:
> - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CCID_EMULATED)) {
> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> - _("this QEMU binary lacks smartcard host "
> - "mode support"));
> - return -1;
> - }
> -
> virBufferAddLit(&opt,
"ccid-card-emulated,backend=certificates");
> for (i = 0; i < VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES; i++) {
> virBufferAsprintf(&opt, ",cert%zu=", i + 1);
> @@ -8304,13 +8290,6 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
> break;
>
> case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
> - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CCID_PASSTHRU)) {
> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> - _("this QEMU binary lacks smartcard "
> - "passthrough mode support"));
> - return -1;
> - }
> -
> if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
> cmd, cfg, def,
> smartcard->data.passthru,
> @@ -8326,9 +8305,6 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
> break;
>
> default:
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("unexpected smartcard type %d"),
> - smartcard->type);
> return -1;
This still returns -1. If somehow we hit this condition, the startup
will fail but no error will be reported. I think just 'return 0;' here
instead
Actually virReportEnumRangeError seems like the common pattern in this case
- Cole