qemu-devel
[Top][All Lists]
Advanced

[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?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]