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@xxxxxxxxx> >> --- >> 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list