mbox series

[v7,0/5] Introducing QMP query-netdev command

Message ID 20210303095910.78277-1-lekiravi@yandex-team.ru
Headers show
Series Introducing QMP query-netdev command | expand

Message

Alexey Kirillov March 3, 2021, 9:59 a.m. UTC
This patch series introduces a new QMP command "query-netdev" to get
information about currently attached backend network devices (netdevs).

Also, since the "info_str" field of "NetClientState" is now deprecated,
we no longer use it for netdevs, only for NIC/hubports.

The HMP command "info network" now also uses QAPI structure inside.

Usage example:

-> { "execute": "query-netdev" }
<- { "return": [
         {
             "listen": "127.0.0.1:90",
             "type": "socket",
             "peer-id": "hub0port1",
             "id": "__org.qemu.net1"
         },
         {
             "script": "/etc/qemu-ifup",
             "downscript": "/etc/qemu-ifdown",
             "ifname": "tap0",
             "type": "tap",
             "peer-id": "net5",
             "vnet_hdr": true,
             "id": "tap0"
         },
         {
             "ipv6": true,
             "ipv4": true,
             "host": "10.0.2.2",
             "ipv6-dns": "fec0::3",
             "ipv6-prefix": "fec0::",
             "net": "10.0.2.0/255.255.255.0",
             "ipv6-host": "fec0::2",
             "type": "user",
             "peer-id": "net0",
             "dns": "10.0.2.3",
             "hostfwd": [
                 {
                     "str": "tcp::20004-:22"
                 }
             ],
             "ipv6-prefixlen": 64,
             "id": "netdev0",
             "restrict": false
         }
     ]
   }

v6->v7:
- Use macroses QAPI_LIST_PREPEND and QAPI_LIST_APPEND for lists.
- Reorder NetBackend entries in alphabetical order.

v5->v6:
- Add QAPI visitor to generate info_str replacement directly from NetdevInfo.
- Make info_str dynamically allocated.
- Make commit messages more meaningful.

v4->v5:
- Enable qtest of query-netdevs for AVR and RX archs.
- Bump "Since" version in QAPI to 6.0.

v3->v4:
- Rename "query-netdevs" to "query-netdev".
- Copy netdev drivers to new QAPI enum "NetBackend".

v2->v3:
- Remove NIC and hubports from query-netdevs.
- Remove several fields from NetdevInfo since they are unnecessary.
- Rename field @peer to @peer-id.
- Add support of vhost-vdpa.
- Keep "info_str" for NIC/hubports, but remove it for netdevs.

v1->v2:
- Rewrite HMP "info network" to get information from results of QMP command.
- Remove obsolete field "info_str" from "NetClientState".

Alexey Kirillov (5):
  qapi: net: Add query-netdev command
  tests: Add tests for query-netdev command
  net: Move NetClientState.info_str to dynamic allocations
  hmp: Use QAPI NetdevInfo in hmp_info_network
  net: Do not fill legacy info_str for backends

 hw/net/xen_nic.c                  |   5 +-
 include/net/net.h                 |   5 +-
 include/qapi/hmp-output-visitor.h |  30 +++++
 net/l2tpv3.c                      |   8 +-
 net/net.c                         |  73 +++++++++--
 net/netmap.c                      |   7 ++
 net/slirp.c                       | 124 ++++++++++++++++++-
 net/socket.c                      |  92 ++++++++++----
 net/tap-win32.c                   |  10 +-
 net/tap.c                         | 107 +++++++++++++++--
 net/vde.c                         |  25 +++-
 net/vhost-user.c                  |  20 +++-
 net/vhost-vdpa.c                  |  15 ++-
 qapi/hmp-output-visitor.c         | 193 ++++++++++++++++++++++++++++++
 qapi/meson.build                  |   1 +
 qapi/net.json                     |  80 +++++++++++++
 tests/qtest/meson.build           |   3 +
 tests/qtest/test-query-netdev.c   | 120 +++++++++++++++++++
 18 files changed, 856 insertions(+), 62 deletions(-)
 create mode 100644 include/qapi/hmp-output-visitor.h
 create mode 100644 qapi/hmp-output-visitor.c
 create mode 100644 tests/qtest/test-query-netdev.c

Comments

Alexey Kirillov March 12, 2021, 10:29 a.m. UTC | #1
ping

Patchew page: https://patchew.org/QEMU/20210303095910.78277-1-lekiravi@yandex-team.ru

03.03.2021, 13:01, "Alexey Kirillov" <lekiravi@yandex-team.ru>:
> This patch series introduces a new QMP command "query-netdev" to get
> information about currently attached backend network devices (netdevs).
>
> Also, since the "info_str" field of "NetClientState" is now deprecated,
> we no longer use it for netdevs, only for NIC/hubports.
>
> The HMP command "info network" now also uses QAPI structure inside.
>
> Usage example:
>
> -> { "execute": "query-netdev" }
> <- { "return": [
>          {
>              "listen": "127.0.0.1:90",
>              "type": "socket",
>              "peer-id": "hub0port1",
>              "id": "__org.qemu.net1"
>          },
>          {
>              "script": "/etc/qemu-ifup",
>              "downscript": "/etc/qemu-ifdown",
>              "ifname": "tap0",
>              "type": "tap",
>              "peer-id": "net5",
>              "vnet_hdr": true,
>              "id": "tap0"
>          },
>          {
>              "ipv6": true,
>              "ipv4": true,
>              "host": "10.0.2.2",
>              "ipv6-dns": "fec0::3",
>              "ipv6-prefix": "fec0::",
>              "net": "10.0.2.0/255.255.255.0",
>              "ipv6-host": "fec0::2",
>              "type": "user",
>              "peer-id": "net0",
>              "dns": "10.0.2.3",
>              "hostfwd": [
>                  {
>                      "str": "tcp::20004-:22"
>                  }
>              ],
>              "ipv6-prefixlen": 64,
>              "id": "netdev0",
>              "restrict": false
>          }
>      ]
>    }
>
> v6->v7:
> - Use macroses QAPI_LIST_PREPEND and QAPI_LIST_APPEND for lists.
> - Reorder NetBackend entries in alphabetical order.
>
> v5->v6:
> - Add QAPI visitor to generate info_str replacement directly from NetdevInfo.
> - Make info_str dynamically allocated.
> - Make commit messages more meaningful.
>
> v4->v5:
> - Enable qtest of query-netdevs for AVR and RX archs.
> - Bump "Since" version in QAPI to 6.0.
>
> v3->v4:
> - Rename "query-netdevs" to "query-netdev".
> - Copy netdev drivers to new QAPI enum "NetBackend".
>
> v2->v3:
> - Remove NIC and hubports from query-netdevs.
> - Remove several fields from NetdevInfo since they are unnecessary.
> - Rename field @peer to @peer-id.
> - Add support of vhost-vdpa.
> - Keep "info_str" for NIC/hubports, but remove it for netdevs.
>
> v1->v2:
> - Rewrite HMP "info network" to get information from results of QMP command.
> - Remove obsolete field "info_str" from "NetClientState".
>
> Alexey Kirillov (5):
>   qapi: net: Add query-netdev command
>   tests: Add tests for query-netdev command
>   net: Move NetClientState.info_str to dynamic allocations
>   hmp: Use QAPI NetdevInfo in hmp_info_network
>   net: Do not fill legacy info_str for backends
>
>  hw/net/xen_nic.c | 5 +-
>  include/net/net.h | 5 +-
>  include/qapi/hmp-output-visitor.h | 30 +++++
>  net/l2tpv3.c | 8 +-
>  net/net.c | 73 +++++++++--
>  net/netmap.c | 7 ++
>  net/slirp.c | 124 ++++++++++++++++++-
>  net/socket.c | 92 ++++++++++----
>  net/tap-win32.c | 10 +-
>  net/tap.c | 107 +++++++++++++++--
>  net/vde.c | 25 +++-
>  net/vhost-user.c | 20 +++-
>  net/vhost-vdpa.c | 15 ++-
>  qapi/hmp-output-visitor.c | 193 ++++++++++++++++++++++++++++++
>  qapi/meson.build | 1 +
>  qapi/net.json | 80 +++++++++++++
>  tests/qtest/meson.build | 3 +
>  tests/qtest/test-query-netdev.c | 120 +++++++++++++++++++
>  18 files changed, 856 insertions(+), 62 deletions(-)
>  create mode 100644 include/qapi/hmp-output-visitor.h
>  create mode 100644 qapi/hmp-output-visitor.c
>  create mode 100644 tests/qtest/test-query-netdev.c
>
> --
> 2.25.1


-- 
Alexey Kirillov
Yandex.Cloud
Jason Wang March 15, 2021, 8:19 a.m. UTC | #2
在 2021/3/12 下午6:29, Alexey Kirillov 写道:
> ping
>
> Patchew page: https://patchew.org/QEMU/20210303095910.78277-1-lekiravi@yandex-team.ru


Applied.

Thanks


>
> 03.03.2021, 13:01, "Alexey Kirillov" <lekiravi@yandex-team.ru>:
>> This patch series introduces a new QMP command "query-netdev" to get
>> information about currently attached backend network devices (netdevs).
>>
>> Also, since the "info_str" field of "NetClientState" is now deprecated,
>> we no longer use it for netdevs, only for NIC/hubports.
>>
>> The HMP command "info network" now also uses QAPI structure inside.
>>
>> Usage example:
>>
>> -> { "execute": "query-netdev" }
>> <- { "return": [
>>           {
>>               "listen": "127.0.0.1:90",
>>               "type": "socket",
>>               "peer-id": "hub0port1",
>>               "id": "__org.qemu.net1"
>>           },
>>           {
>>               "script": "/etc/qemu-ifup",
>>               "downscript": "/etc/qemu-ifdown",
>>               "ifname": "tap0",
>>               "type": "tap",
>>               "peer-id": "net5",
>>               "vnet_hdr": true,
>>               "id": "tap0"
>>           },
>>           {
>>               "ipv6": true,
>>               "ipv4": true,
>>               "host": "10.0.2.2",
>>               "ipv6-dns": "fec0::3",
>>               "ipv6-prefix": "fec0::",
>>               "net": "10.0.2.0/255.255.255.0",
>>               "ipv6-host": "fec0::2",
>>               "type": "user",
>>               "peer-id": "net0",
>>               "dns": "10.0.2.3",
>>               "hostfwd": [
>>                   {
>>                       "str": "tcp::20004-:22"
>>                   }
>>               ],
>>               "ipv6-prefixlen": 64,
>>               "id": "netdev0",
>>               "restrict": false
>>           }
>>       ]
>>     }
>>
>> v6->v7:
>> - Use macroses QAPI_LIST_PREPEND and QAPI_LIST_APPEND for lists.
>> - Reorder NetBackend entries in alphabetical order.
>>
>> v5->v6:
>> - Add QAPI visitor to generate info_str replacement directly from NetdevInfo.
>> - Make info_str dynamically allocated.
>> - Make commit messages more meaningful.
>>
>> v4->v5:
>> - Enable qtest of query-netdevs for AVR and RX archs.
>> - Bump "Since" version in QAPI to 6.0.
>>
>> v3->v4:
>> - Rename "query-netdevs" to "query-netdev".
>> - Copy netdev drivers to new QAPI enum "NetBackend".
>>
>> v2->v3:
>> - Remove NIC and hubports from query-netdevs.
>> - Remove several fields from NetdevInfo since they are unnecessary.
>> - Rename field @peer to @peer-id.
>> - Add support of vhost-vdpa.
>> - Keep "info_str" for NIC/hubports, but remove it for netdevs.
>>
>> v1->v2:
>> - Rewrite HMP "info network" to get information from results of QMP command.
>> - Remove obsolete field "info_str" from "NetClientState".
>>
>> Alexey Kirillov (5):
>>    qapi: net: Add query-netdev command
>>    tests: Add tests for query-netdev command
>>    net: Move NetClientState.info_str to dynamic allocations
>>    hmp: Use QAPI NetdevInfo in hmp_info_network
>>    net: Do not fill legacy info_str for backends
>>
>>   hw/net/xen_nic.c | 5 +-
>>   include/net/net.h | 5 +-
>>   include/qapi/hmp-output-visitor.h | 30 +++++
>>   net/l2tpv3.c | 8 +-
>>   net/net.c | 73 +++++++++--
>>   net/netmap.c | 7 ++
>>   net/slirp.c | 124 ++++++++++++++++++-
>>   net/socket.c | 92 ++++++++++----
>>   net/tap-win32.c | 10 +-
>>   net/tap.c | 107 +++++++++++++++--
>>   net/vde.c | 25 +++-
>>   net/vhost-user.c | 20 +++-
>>   net/vhost-vdpa.c | 15 ++-
>>   qapi/hmp-output-visitor.c | 193 ++++++++++++++++++++++++++++++
>>   qapi/meson.build | 1 +
>>   qapi/net.json | 80 +++++++++++++
>>   tests/qtest/meson.build | 3 +
>>   tests/qtest/test-query-netdev.c | 120 +++++++++++++++++++
>>   18 files changed, 856 insertions(+), 62 deletions(-)
>>   create mode 100644 include/qapi/hmp-output-visitor.h
>>   create mode 100644 qapi/hmp-output-visitor.c
>>   create mode 100644 tests/qtest/test-query-netdev.c
>>
>> --
>> 2.25.1
>
> -- 
> Alexey Kirillov
> Yandex.Cloud
>
>