mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
qapi: Implement deprecated-input={reject,crash} for enum values
This copies the code implementing the policy from qapi/qmp-dispatch.c to qapi/qobject-input-visitor.c. Tolerable, but if we acquire more copies, we should look into factoring them out. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Tested-by: Peter Krempa <pkrempa@redhat.com> Acked-by: Peter Krempa <pkrempa@redhat.com> Message-Id: <20211025042405.3762351-5-armbru@redhat.com>
This commit is contained in:
parent
ed29bb28f8
commit
aa2370444b
4 changed files with 38 additions and 6 deletions
|
@ -393,7 +393,7 @@ static bool input_type_enum(Visitor *v, const char *name, int *obj,
|
|||
const QEnumLookup *lookup, Error **errp)
|
||||
{
|
||||
int64_t value;
|
||||
char *enum_str;
|
||||
g_autofree char *enum_str = NULL;
|
||||
|
||||
if (!visit_type_str(v, name, &enum_str, errp)) {
|
||||
return false;
|
||||
|
@ -403,11 +403,23 @@ static bool input_type_enum(Visitor *v, const char *name, int *obj,
|
|||
if (value < 0) {
|
||||
error_setg(errp, "Parameter '%s' does not accept value '%s'",
|
||||
name ? name : "null", enum_str);
|
||||
g_free(enum_str);
|
||||
return false;
|
||||
}
|
||||
|
||||
g_free(enum_str);
|
||||
if (lookup->flags && (lookup->flags[value] & QAPI_ENUM_DEPRECATED)) {
|
||||
switch (v->compat_policy.deprecated_input) {
|
||||
case COMPAT_POLICY_INPUT_ACCEPT:
|
||||
break;
|
||||
case COMPAT_POLICY_INPUT_REJECT:
|
||||
error_setg(errp, "Deprecated value '%s' disabled by policy",
|
||||
enum_str);
|
||||
return false;
|
||||
case COMPAT_POLICY_INPUT_CRASH:
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
*obj = value;
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue