virObjectUnref(def->data.passthru);
break;
+ case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default:
break;
}
unsigned int flags)
{
g_autoptr(virDomainSmartcardDef) def = NULL;
- g_autofree char *mode = NULL;
g_autofree char *type = NULL;
g_autofree xmlNodePtr *certificates = NULL;
int n = 0;
ctxt->node = node;
def = g_new0(virDomainSmartcardDef, 1);
- mode = virXMLPropString(node, "mode");
- if (mode == NULL) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("missing smartcard device mode"));
- return NULL;
- }
- if ((def->type = virDomainSmartcardTypeFromString(mode)) < 0) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("unknown smartcard device mode: %s"),
- mode);
+ if (virXMLPropEnum(node, "mode", virDomainSmartcardTypeFromString,
+ VIR_XML_PROP_REQUIRED, &def->type) < 0)
return NULL;
- }
switch (def->type) {
case VIR_DOMAIN_SMARTCARD_TYPE_HOST:
break;
+ case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default:
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("unknown smartcard mode"));
+ virReportEnumRangeError(virDomainSmartcardType, def->type);
return NULL;
}
virDomainChrSourceDefFormat(&childBuf, def->data.passthru, flags);
break;
+ case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default:
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("unexpected smartcard type %d"), def->type);
+ virReportEnumRangeError(virDomainSmartcardType, def->type);
return -1;
}
virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
return virSecuritySELinuxRestoreChardevLabel(mgr, def,
dev->data.passthru, false);
+ case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default:
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("unknown smartcard type %d"),
- dev->type);
+ virReportEnumRangeError(virDomainSmartcardType, dev->type);
return -1;
}
return virSecuritySELinuxSetChardevLabel(mgr, def,
dev->data.passthru, false);
+ case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default:
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("unknown smartcard type %d"),
- dev->type);
+ virReportEnumRangeError(virDomainSmartcardType, dev->type);
return -1;
}