[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Handling the O-type
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] Handling the O-type |
Date: |
Fri, 18 Jun 2010 17:30:11 -0300 |
On Wed, 02 Jun 2010 09:31:24 +0200
Markus Armbruster <address@hidden> wrote:
> Luiz Capitulino <address@hidden> writes:
[...]
> > static void check_mandatory_args(const char *cmd_arg_name,
> > @@ -4344,6 +4413,9 @@ out:
> > * Client argument checking rules:
> > *
> > * 1. Client must provide all mandatory arguments
> > + * 2. Each argument provided by the client must be valid
> > + * 3. Each argument provided by the client must have the type expected
> > + * by the command
> > */
> > static int qmp_check_client_args(const mon_cmd_t *cmd, QDict *client_args)
> > {
> > @@ -4355,7 +4427,10 @@ static int qmp_check_client_args(const mon_cmd_t
> > *cmd, QDict *client_args)
> > res.qdict = client_args;
> > qdict_iter(cmd_args, check_mandatory_args, &res);
> >
> > - /* TODO: Check client args type */
> > + if (!res.result && !res.skip) {
> > + res.qdict = cmd_args;
> > + qdict_iter(client_args, check_client_args_type, &res);
> > + }
>
> What if we have both an O-type argument and other arguments? Then the
> 'O' makes check_client_args_type() set res.skip, and we duly skip
> checking the other arguments here.
I was working on this and it seems a bad idea to allow mixing O-type and
other monitor types*.
The reason is that you can't easily tell if an argument passed by the client
is part of the O-type or the monitor type. We could workaround this by trying to
ensure that an argument exists only in one of them, but I really feel this will
get messy.
I think we should disallow mixing O-type with other argument types and maintain
the skip trick, ie. skip any checking in the top level if the argument is an
O-type one.
* Does this work with the current argument checker?
- Re: [Qemu-devel] [PATCH 3/9] QMP: First half of the new argument checking code, (continued)
[Qemu-devel] [PATCH 2/9] Monitor: handle optional '-' arg as a bool, Luiz Capitulino, 2010/06/01
[Qemu-devel] [PATCH 5/9] QMP: Drop old client argument checker, Luiz Capitulino, 2010/06/01
[Qemu-devel] [PATCH 6/9] QMP: check_opts(): Minor cleanup, Luiz Capitulino, 2010/06/01
[Qemu-devel] [PATCH 4/9] QMP: Second half of the new argument checking code, Luiz Capitulino, 2010/06/01
[Qemu-devel] [PATCH 7/9] QError: Introduce QERR_QMP_BAD_INPUT_OBJECT_MEMBER, Luiz Capitulino, 2010/06/01
[Qemu-devel] [PATCH 8/9] QMP: Introduce qmp_check_input_obj(), Luiz Capitulino, 2010/06/01
[Qemu-devel] [PATCH 9/9] QMP: Drop old input object checking code, Luiz Capitulino, 2010/06/01