aboutsummaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
Diffstat (limited to 'qapi')
-rw-r--r--qapi/compat.json8
-rw-r--r--qapi/qapi-util.c6
-rw-r--r--qapi/qobject-output-visitor.c8
3 files changed, 19 insertions, 3 deletions
diff --git a/qapi/compat.json b/qapi/compat.json
index 74a8493..dd7261a 100644
--- a/qapi/compat.json
+++ b/qapi/compat.json
@@ -47,9 +47,15 @@
#
# @deprecated-input: how to handle deprecated input (default 'accept')
# @deprecated-output: how to handle deprecated output (default 'accept')
+# @unstable-input: how to handle unstable input (default 'accept')
+# (since 6.2)
+# @unstable-output: how to handle unstable output (default 'accept')
+# (since 6.2)
#
# Since: 6.0
##
{ 'struct': 'CompatPolicy',
'data': { '*deprecated-input': 'CompatPolicyInput',
- '*deprecated-output': 'CompatPolicyOutput' } }
+ '*deprecated-output': 'CompatPolicyOutput',
+ '*unstable-input': 'CompatPolicyInput',
+ '*unstable-output': 'CompatPolicyOutput' } }
diff --git a/qapi/qapi-util.c b/qapi/qapi-util.c
index 53b493c..fda7044 100644
--- a/qapi/qapi-util.c
+++ b/qapi/qapi-util.c
@@ -49,6 +49,12 @@ bool compat_policy_input_ok(unsigned special_features,
error_class, kind, name, errp)) {
return false;
}
+ if ((special_features & (1u << QAPI_UNSTABLE))
+ && !compat_policy_input_ok1("Unstable",
+ policy->unstable_input,
+ error_class, kind, name, errp)) {
+ return false;
+ }
return true;
}
diff --git a/qapi/qobject-output-visitor.c b/qapi/qobject-output-visitor.c
index b155bf4..74770ed 100644
--- a/qapi/qobject-output-visitor.c
+++ b/qapi/qobject-output-visitor.c
@@ -212,8 +212,12 @@ static bool qobject_output_type_null(Visitor *v, const char *name,
static bool qobject_output_policy_skip(Visitor *v, const char *name,
unsigned special_features)
{
- return !(special_features & 1u << QAPI_DEPRECATED)
- || v->compat_policy.deprecated_output == COMPAT_POLICY_OUTPUT_HIDE;
+ CompatPolicy *pol = &v->compat_policy;
+
+ return ((special_features & 1u << QAPI_DEPRECATED)
+ && pol->deprecated_output == COMPAT_POLICY_OUTPUT_HIDE)
+ || ((special_features & 1u << QAPI_UNSTABLE)
+ && pol->unstable_output == COMPAT_POLICY_OUTPUT_HIDE);
}
/* Finish building, and return the root object.