|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 1/5] qapi: net: Add query-netdev command
On 3/2/21 12:02 PM, Alexey Kirillov wrote:
> The query-netdev command is used to get the configuration of the current
> network device backends (netdevs).
> This is the QMP analog of the HMP command "info network" but only for netdevs
> (i.e. excluding NIC and hubports).
>
> The query-netdev command returns an array of objects of the NetdevInfo type,
> which are an extension of Netdev type. It means that response can be used for
> netdev-add after small modification. This can be useful for recreate the same
> netdev configuration.
>
> Information about the network device is filled in when it is created or
> modified and is available through the NetClientState->stored_config.
>
> Signed-off-by: Alexey Kirillov <lekiravi@xxxxxxxxxxxxxx>
> Acked-by: Markus Armbruster <armbru@xxxxxxxxxx>
> ---
> +++ b/net/net.c
>
> +NetdevInfoList *qmp_query_netdev(Error **errp)
> +{
> + NetdevInfoList *list = NULL;
> + NetClientState *nc;
> +
> + QTAILQ_FOREACH(nc, &net_clients, next) {
> + /*
> + * Only look at netdevs (backend network devices), not for each queue
> + * or NIC / hubport
> + */
> + if (nc->stored_config) {
> + NetdevInfoList *node = g_new0(NetdevInfoList, 1);
Please use QAPI_LIST_PREPEND instead of open-coding it.
> +
> + node->value = QAPI_CLONE(NetdevInfo, nc->stored_config);
> + g_free(node->value->id); /* Need to dealloc default empty id */
> + node->value->id = g_strdup(nc->name);
> +
> + node->value->has_peer_id = nc->peer != NULL;
> + if (node->value->has_peer_id) {
> + node->value->peer_id = g_strdup(nc->peer->name);
> + }
> +
> + node->next = list;
> + list = node;
> + }
> + }
> +
> +++ b/net/slirp.c
> @@ -345,6 +345,14 @@ static SaveVMHandlers savevm_slirp_state = {
> .load_state = net_slirp_state_load,
> };
>
> +#define APPEND_STRINGLIST(tail, new_val) \
> + do { \
> + *(tail) = g_new0(StringList, 1); \
> + (*(tail))->value = g_new0(String, 1); \
> + (*(tail))->value->str = g_strdup((new_val)); \
> + (tail) = &((*(tail))->next); \
> + } while (0)
Please use QAPI_LIST_APPEND instead of re-coding it.
> +++ b/qapi/net.json
> @@ -714,3 +714,83 @@
> ##
> { 'event': 'FAILOVER_NEGOTIATED',
> 'data': {'device-id': 'str'} }
> +
> +##
> +# @NetBackend:
> +#
> +# Available netdev backend drivers.
> +#
> +# Since: 6.0
> +##
> +{ 'enum': 'NetBackend',
> + 'data': [ 'user', 'tap', 'l2tpv3', 'socket', 'vde', 'bridge', 'netmap',
> + 'vhost-user', 'vhost-vdpa' ] }
Is it worth alphabetizing this list?
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |