qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] net: Complete qapi-fication of netdev_add


From: Markus Armbruster
Subject: Re: [PATCH] net: Complete qapi-fication of netdev_add
Date: Mon, 16 Mar 2020 13:35:38 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

Markus Armbruster <address@hidden> writes:

[...]
> We better check all other uses of option group "netdev".

To the best of my grepping abilities:

= Definition =

* qemu_netdev_opts

  Option group definition, with empty .desc[].

= CLI =

Keep in mind: we finish processing CLI netdev before we start monitors
(we call net_init_clients() is mon_init_func()).  Monitor commands can
mess with CLI netdevs, but CLI cannot mess with monitor netdevs.

* main()

  - case QEMU_OPTION_netdev

    Straighforward parse of option argument; record in
    @qemu_netdev_opts.

  - case QEMU_OPTION_readconfig

    Similar.

  - case QEMU_OPTION_writeconfig

    "Unparse" of @qemu_netdev_opts.  Can contains only CLI netdevs.

* net_init_clients()

  Pass the CLI netdevs to net_client_init().

= Monitor =

* hmp_netdev_add()

  Straighforward parse of command argument (record in
  @qemu_netdev_opts), pass to net_client_init() via netdev_add().

* qmp_netdev_add()

  Before your patch: convert from JSON to QemuOpts (record in
  @qemu_netdev_opts), pass to net_client_init() via netdev_add().

  Note: net_client_init() converts QemuOpts to QAPI type Netdev, and
  passes that to net_client_init1().

  Afterwards: convert JSON straight to Netdev, pass to
  net_client_init1().  Also create in @qemu_netdev_opts, but empty apart
  from ID.

* qmp_netdev_del()
* netdev_del_completion()

  Both implement a "NetClientState is a netdev" predicate by checking
  "@qemu_netdev_opts has an entry with this name".

Looks like the only thing we do with the QemuOpts recorded in
@qemu_netdev_opts is checking existence.  Your patch preserves that.  I
doesn't preserve the option parameters, but they are not used.  Okay.

The correctness argument becomes simpler if we implement the "is a
netdev" predicate without @qemu_netdev_opts.  Could be done either
before or after this patch.




reply via email to

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