[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v4 04/11] qapi: net: add stream and dgram netdevs
From: |
Markus Armbruster |
Subject: |
Re: [RFC PATCH v4 04/11] qapi: net: add stream and dgram netdevs |
Date: |
Fri, 24 Jun 2022 11:53:45 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Laurent Vivier <lvivier@redhat.com> writes:
> Copied from socket netdev file and modified to use SocketAddress
> to be able to introduce new features like unix socket.
>
> "udp" and "mcast" are squashed into dgram netdev, multicast is detected
> according to the IP address type.
> "listen" and "connect" modes are managed by stream netdev. An optional
> parameter "server" defines the mode (server by default)
>
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
> ---
[...]
> diff --git a/net/hub.c b/net/hub.c
> index 1375738bf121..67ca53485638 100644
> --- a/net/hub.c
> +++ b/net/hub.c
> @@ -313,6 +313,8 @@ void net_hub_check_clients(void)
> case NET_CLIENT_DRIVER_USER:
> case NET_CLIENT_DRIVER_TAP:
> case NET_CLIENT_DRIVER_SOCKET:
> + case NET_CLIENT_DRIVER_STREAM:
> + case NET_CLIENT_DRIVER_DGRAM:
> case NET_CLIENT_DRIVER_VDE:
> case NET_CLIENT_DRIVER_VHOST_USER:
> has_host_dev = 1;
> diff --git a/net/meson.build b/net/meson.build
> index 754e2d1d405c..896d86d43914 100644
> --- a/net/meson.build
> +++ b/net/meson.build
> @@ -13,6 +13,8 @@ softmmu_ss.add(files(
> 'net.c',
> 'queue.c',
> 'socket.c',
> + 'stream.c',
> + 'dgram.c',
> 'util.c',
> ))
>
> diff --git a/net/net.c b/net/net.c
> index 531e6c5d2056..1295eb946b7a 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -48,6 +48,7 @@
> #include "qemu/qemu-print.h"
> #include "qemu/main-loop.h"
> #include "qemu/option.h"
> +#include "qemu/keyval.h"
> #include "qapi/error.h"
> #include "qapi/opts-visitor.h"
> #include "sysemu/runstate.h"
> @@ -1014,6 +1015,8 @@ static int (* const
> net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
> #endif
> [NET_CLIENT_DRIVER_TAP] = net_init_tap,
> [NET_CLIENT_DRIVER_SOCKET] = net_init_socket,
> + [NET_CLIENT_DRIVER_STREAM] = net_init_stream,
> + [NET_CLIENT_DRIVER_DGRAM] = net_init_dgram,
> #ifdef CONFIG_VDE
> [NET_CLIENT_DRIVER_VDE] = net_init_vde,
> #endif
> @@ -1101,6 +1104,8 @@ void show_netdevs(void)
> int idx;
> const char *available_netdevs[] = {
> "socket",
> + "stream",
> + "dgram",
> "hubport",
> "tap",
> #ifdef CONFIG_SLIRP
> @@ -1612,7 +1617,34 @@ void net_init_clients(void)
> */
> bool netdev_is_modern(const char *optarg)
> {
> - return false;
> + QemuOpts *opts;
> + bool is_modern;
> + const char *type;
> + static QemuOptsList dummy_opts = {
> + .name = "netdev",
> + .implied_opt_name = "type",
> + .head = QTAILQ_HEAD_INITIALIZER(dummy_opts.head),
> + .desc = { { } },
> + };
> +
> + if (optarg[0] == '{') {
> + /*
> + * detect JSON syntax. It is supported by
Start the sentence with a capital letter.
Maybe: /* This is JSON, which means it's modern syntax */
> + * qobject_input_visitor_new_str() (modern style syntax)
> + * but not by qemu_opts_parse_noisily() (old style syntax)
> + */
> + return true;
> + }
> +
> + opts = qemu_opts_create(&dummy_opts, NULL, false, &error_abort);
> + qemu_opts_do_parse(opts, optarg, dummy_opts.implied_opt_name,
> + &error_abort);
> + type = qemu_opt_get(opts, "type");
> + is_modern = !g_strcmp0(type, "stream") || !g_strcmp0(type, "dgram");
> +
> + qemu_opts_reset(&dummy_opts);
> +
> + return is_modern;
> }
>
> /*
[...]
- [RFC PATCH v4 01/11] net: introduce convert_host_port(), (continued)
- [RFC PATCH v4 01/11] net: introduce convert_host_port(), Laurent Vivier, 2022/06/23
- [RFC PATCH v4 02/11] net: remove the @errp argument of net_client_inits(), Laurent Vivier, 2022/06/23
- [RFC PATCH v4 03/11] qapi: net: introduce a way to bypass qemu_opts_parse_noisily(), Laurent Vivier, 2022/06/23
- [RFC PATCH v4 05/11] net: stream: Don't ignore EINVAL on netdev socket connection, Laurent Vivier, 2022/06/23
- [RFC PATCH v4 06/11] net: stream: add unix socket, Laurent Vivier, 2022/06/23
- [RFC PATCH v4 04/11] qapi: net: add stream and dgram netdevs, Laurent Vivier, 2022/06/23
- Re: [RFC PATCH v4 04/11] qapi: net: add stream and dgram netdevs,
Markus Armbruster <=
- [RFC PATCH v4 09/11] net: dgram: add unix socket, Laurent Vivier, 2022/06/23
- [RFC PATCH v4 11/11] net: stream: move to QIO, Laurent Vivier, 2022/06/23
- [RFC PATCH v4 08/11] net: dgram: move mcast specific code from net_socket_fd_init_dgram(), Laurent Vivier, 2022/06/23
- [RFC PATCH v4 07/11] net: dgram: make dgram_dst generic, Laurent Vivier, 2022/06/23
- [RFC PATCH v4 10/11] qemu-sockets: introduce socket_uri(), Laurent Vivier, 2022/06/23