On Thu, Oct 28, 2021 at 12:25:17PM +0200, Markus Armbruster wrote: > The code to check command policy can see special feature flag > 'deprecated' as command flag QCO_DEPRECATED. I want to make feature > flag 'unstable' visible there as well, so I can add policy for it. > > To let me make it visible, add member @special_features (a bitset of > QapiSpecialFeature) to QmpCommand, and adjust the generator to pass it > through qmp_register_command(). Then replace "QCO_DEPRECATED in > @flags" by QAPI_DEPRECATED in @special_features", and drop > QCO_DEPRECATED. > > Signed-off-by: Markus Armbruster <armbru@xxxxxxxxxx> > Reviewed-by: Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> > Acked-by: John Snow <jsnow@xxxxxxxxxx> > --- > +++ b/qapi/qmp-dispatch.c > @@ -176,7 +176,7 @@ QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request, > "The command %s has not been found", command); > goto out; > } > - if (cmd->options & QCO_DEPRECATED) { > + if (cmd->special_features & 1u << QAPI_DEPRECATED) { I admit having to check the C operator precedence table when reading this (<< is higher than &); if writing it myself, I would probably have used explicit () to avoid reviewer confusion, but what you have is correct. (After grepping for ' & 1.*<<' and ' & (1.*<<', it looks like authors using explicit precedence happens more often, but that there are other instances in the code base relying on implicit precedence.) Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org