Message ID | 20221005162051.1120041-1-lvivier@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | qapi: net: add unix socket type support to netdev backend | expand |
On Wed, Oct 05, 2022 at 06:20:34PM +0200, Laurent Vivier wrote: > "-netdev socket" only supports inet sockets. > > It's not a complex task to add support for unix sockets, but > the socket netdev parameters are not defined to manage well unix > socket parameters. Looks good. Acked-by: Michael S. Tsirkin <mst@redhat.com> Belongs in Jason's tree. > As discussed in: > > "socket.c added support for unix domain socket datagram transport" > https://lore.kernel.org/qemu-devel/1C0E1BC5-904F-46B0-8044-68E43E67BE60@gmail.com/ > > This series adds support of unix socket type using SocketAddress QAPI structure. > > Two new netdev backends, "stream" and "dgram" are added, that are barely a copy of "socket" > backend but they use the SocketAddress QAPI to provide socket parameters. > And then they also implement unix sockets (TCP and UDP). > > Some examples of CLI syntax: > > for TCP: > > -netdev stream,id=socket0,addr.type=inet,addr.host=localhost,addr.port=1234 > -netdev stream,id=socket0,server=off,addr.type=inet,addr.host=localhost,addr.port=1234 > > -netdev dgram,id=socket0,\ > local.type=inet,local.host=localhost,local.port=1234,\ > remote.type=inet,remote.host=localhost,remote.port=1235 > > for UNIX: > > -netdev stream,id=socket0,addr.type=unix,addr.path=/tmp/qemu0 > -netdev stream,id=socket0,server=off,addr.type=unix,addr.path=/tmp/qemu0 > > -netdev dgram,id=socket0,\ > local.type=unix,local.path=/tmp/qemu0,\ > remote.type=unix,remote.path=/tmp/qemu1 > > for FD: > > -netdev stream,id=socket0,addr.type=fd,addr.str=4 > -netdev stream,id=socket0,server=off,addr.type=fd,addr.str=5 > > -netdev dgram,id=socket0,local.type=fd,addr.str=4 > > v10: > - add Red Hat copyright > - initialize dgram_dst to NULL in SOCKET_ADDRESS_TYPE_FD > - remove redundente _stream / _dgram in functions name > - move net_dgram_init() into net_init_dgram() > - address Thomas' comments on qtest > - add a function qemu_set_info_str() to set info string > - tested stream netdev with fd type using qrap/passt and > "-netdev stream,addr.type=fd,server=off,addr.str=5,id=netdev0" > > v9: > - add events to report stream connection/disconnection > - remove from net/dgram.c send_fn, listen_fd, net_dgram_accept() > net_dgram_connect() and net_dgram_send() that are only > needed by net/stream.c > - remove from net/stream.c send_fn > - add Red Hat copyright > - add original net/socket.c Stefano's patch (EINVAL) > > v8: > - test ipv4 and ipv6 parameters (stream inet) > - test abstract parameter (stream unix) > - add SocketAddressInet supported parameters in qemu-options.hx > (only stream, supported by the move to QIO) > - with qio_channel_writev() replace (ret == -1 && errno == EAGAIN) > by (ret == QIO_CHANNEL_ERR_BLOCK) > > v7: > - add qtests > - update parameters table in net.json > - update socket_uri() and socket_parse() > > v6: > - s/netdev option/-netdev option/ PATCH 4 > - s/ / / > - update @NetdevStreamOptions and @NetdevDgramOptions comments > - update PATCH 4 description message > - add missing return in error case for unix stream socket > - split socket_uri() patch: move and rename, then change content > > v5: > - remove RFC prefix > - put the change of net_client_parse() into its own patch (exit() in the > function) > - update comments regarding netdev_is_modern() and netdev_parse_modern() > - update error case in net_stream_server_init() > - update qemu-options.hx with unix type > - fix HMP "info network" with unix protocol/server side. > > v4: > - net_client_parse() fails with exit() rather than with return. > - keep "{ 'name': 'vmnet-host', 'if': 'CONFIG_VMNET' }" on its > own line in qapi/net.json > - add a comment in qapi/net.json about parameters usage > - move netdev_is_modern() check to qemu_init() > - in netdev_is_modern(), check for JSON and use qemu_opts_do_parse() > to parse parameters and detect type value. > - add a blank line after copyright comment > > v3: > - remove support of "-net" for dgram and stream. They are only > supported with "-netdev" option. > - use &error_fatal directly in net_client_inits() > - update qemu-options.hx > - move to QIO for stream socket > > v2: > - use "stream" and "dgram" rather than "socket-ng,mode=stream" > and ""socket-ng,mode=dgram" > - extract code to bypass qemu_opts_parse_noisily() to > a new patch > - do not ignore EINVAL (Stefano) > - fix "-net" option > > CC: Ralph Schmieder <ralph.schmieder@gmail.com> > CC: Stefano Brivio <sbrivio@redhat.com> > CC: Daniel P. Berrangé <berrange@redhat.com> > CC: Markus Armbruster <armbru@redhat.com> > > Laurent Vivier (15): > net: introduce convert_host_port() > net: remove the @errp argument of net_client_inits() > net: simplify net_client_parse() error management > qapi: net: introduce a way to bypass qemu_opts_parse_noisily() > net: introduce qemu_set_info_str() function > qapi: net: add stream and dgram netdevs > net: stream: add unix socket > net: dgram: make dgram_dst generic > net: dgram: move mcast specific code from net_socket_fd_init_dgram() > net: dgram: add unix socket > qemu-sockets: move and rename SocketAddress_to_str() > qemu-sockets: update socket_uri() and socket_parse() to be consistent > net: stream: move to QIO to enable additional parameters > tests/qtest: netdev: test stream and dgram backends > net: stream: add QAPI events to report connection state > > Stefano Brivio (2): > net: socket: Don't ignore EINVAL on netdev socket connection > net: stream: Don't ignore EINVAL on netdev socket connection > > hmp-commands.hx | 2 +- > include/net/net.h | 7 +- > include/qemu/sockets.h | 4 +- > monitor/hmp-cmds.c | 23 +- > net/clients.h | 6 + > net/dgram.c | 622 ++++++++++++++++++++++++++++++++++++ > net/hub.c | 2 + > net/l2tpv3.c | 3 +- > net/meson.build | 2 + > net/net.c | 186 ++++++++--- > net/slirp.c | 5 +- > net/socket.c | 36 +-- > net/stream.c | 382 ++++++++++++++++++++++ > net/tap-win32.c | 3 +- > net/tap.c | 13 +- > net/vde.c | 3 +- > net/vhost-user.c | 3 +- > net/vhost-vdpa.c | 2 +- > qapi/net.json | 108 ++++++- > qemu-options.hx | 14 + > softmmu/vl.c | 16 +- > tests/qtest/meson.build | 1 + > tests/qtest/netdev-socket.c | 417 ++++++++++++++++++++++++ > util/qemu-sockets.c | 25 ++ > 24 files changed, 1757 insertions(+), 128 deletions(-) > create mode 100644 net/dgram.c > create mode 100644 net/stream.c > create mode 100644 tests/qtest/netdev-socket.c > > -- > 2.37.3 >
On Thu, Oct 6, 2022 at 7:21 PM Michael S. Tsirkin <mst@redhat.com> wrote: > > On Wed, Oct 05, 2022 at 06:20:34PM +0200, Laurent Vivier wrote: > > "-netdev socket" only supports inet sockets. > > > > It's not a complex task to add support for unix sockets, but > > the socket netdev parameters are not defined to manage well unix > > socket parameters. > > Looks good. > > Acked-by: Michael S. Tsirkin <mst@redhat.com> > > Belongs in Jason's tree. I've queued this series. Thanks > > > As discussed in: > > > > "socket.c added support for unix domain socket datagram transport" > > https://lore.kernel.org/qemu-devel/1C0E1BC5-904F-46B0-8044-68E43E67BE60@gmail.com/ > > > > This series adds support of unix socket type using SocketAddress QAPI structure. > > > > Two new netdev backends, "stream" and "dgram" are added, that are barely a copy of "socket" > > backend but they use the SocketAddress QAPI to provide socket parameters. > > And then they also implement unix sockets (TCP and UDP). > > > > Some examples of CLI syntax: > > > > for TCP: > > > > -netdev stream,id=socket0,addr.type=inet,addr.host=localhost,addr.port=1234 > > -netdev stream,id=socket0,server=off,addr.type=inet,addr.host=localhost,addr.port=1234 > > > > -netdev dgram,id=socket0,\ > > local.type=inet,local.host=localhost,local.port=1234,\ > > remote.type=inet,remote.host=localhost,remote.port=1235 > > > > for UNIX: > > > > -netdev stream,id=socket0,addr.type=unix,addr.path=/tmp/qemu0 > > -netdev stream,id=socket0,server=off,addr.type=unix,addr.path=/tmp/qemu0 > > > > -netdev dgram,id=socket0,\ > > local.type=unix,local.path=/tmp/qemu0,\ > > remote.type=unix,remote.path=/tmp/qemu1 > > > > for FD: > > > > -netdev stream,id=socket0,addr.type=fd,addr.str=4 > > -netdev stream,id=socket0,server=off,addr.type=fd,addr.str=5 > > > > -netdev dgram,id=socket0,local.type=fd,addr.str=4 > > > > v10: > > - add Red Hat copyright > > - initialize dgram_dst to NULL in SOCKET_ADDRESS_TYPE_FD > > - remove redundente _stream / _dgram in functions name > > - move net_dgram_init() into net_init_dgram() > > - address Thomas' comments on qtest > > - add a function qemu_set_info_str() to set info string > > - tested stream netdev with fd type using qrap/passt and > > "-netdev stream,addr.type=fd,server=off,addr.str=5,id=netdev0" > > > > v9: > > - add events to report stream connection/disconnection > > - remove from net/dgram.c send_fn, listen_fd, net_dgram_accept() > > net_dgram_connect() and net_dgram_send() that are only > > needed by net/stream.c > > - remove from net/stream.c send_fn > > - add Red Hat copyright > > - add original net/socket.c Stefano's patch (EINVAL) > > > > v8: > > - test ipv4 and ipv6 parameters (stream inet) > > - test abstract parameter (stream unix) > > - add SocketAddressInet supported parameters in qemu-options.hx > > (only stream, supported by the move to QIO) > > - with qio_channel_writev() replace (ret == -1 && errno == EAGAIN) > > by (ret == QIO_CHANNEL_ERR_BLOCK) > > > > v7: > > - add qtests > > - update parameters table in net.json > > - update socket_uri() and socket_parse() > > > > v6: > > - s/netdev option/-netdev option/ PATCH 4 > > - s/ / / > > - update @NetdevStreamOptions and @NetdevDgramOptions comments > > - update PATCH 4 description message > > - add missing return in error case for unix stream socket > > - split socket_uri() patch: move and rename, then change content > > > > v5: > > - remove RFC prefix > > - put the change of net_client_parse() into its own patch (exit() in the > > function) > > - update comments regarding netdev_is_modern() and netdev_parse_modern() > > - update error case in net_stream_server_init() > > - update qemu-options.hx with unix type > > - fix HMP "info network" with unix protocol/server side. > > > > v4: > > - net_client_parse() fails with exit() rather than with return. > > - keep "{ 'name': 'vmnet-host', 'if': 'CONFIG_VMNET' }" on its > > own line in qapi/net.json > > - add a comment in qapi/net.json about parameters usage > > - move netdev_is_modern() check to qemu_init() > > - in netdev_is_modern(), check for JSON and use qemu_opts_do_parse() > > to parse parameters and detect type value. > > - add a blank line after copyright comment > > > > v3: > > - remove support of "-net" for dgram and stream. They are only > > supported with "-netdev" option. > > - use &error_fatal directly in net_client_inits() > > - update qemu-options.hx > > - move to QIO for stream socket > > > > v2: > > - use "stream" and "dgram" rather than "socket-ng,mode=stream" > > and ""socket-ng,mode=dgram" > > - extract code to bypass qemu_opts_parse_noisily() to > > a new patch > > - do not ignore EINVAL (Stefano) > > - fix "-net" option > > > > CC: Ralph Schmieder <ralph.schmieder@gmail.com> > > CC: Stefano Brivio <sbrivio@redhat.com> > > CC: Daniel P. Berrangé <berrange@redhat.com> > > CC: Markus Armbruster <armbru@redhat.com> > > > > Laurent Vivier (15): > > net: introduce convert_host_port() > > net: remove the @errp argument of net_client_inits() > > net: simplify net_client_parse() error management > > qapi: net: introduce a way to bypass qemu_opts_parse_noisily() > > net: introduce qemu_set_info_str() function > > qapi: net: add stream and dgram netdevs > > net: stream: add unix socket > > net: dgram: make dgram_dst generic > > net: dgram: move mcast specific code from net_socket_fd_init_dgram() > > net: dgram: add unix socket > > qemu-sockets: move and rename SocketAddress_to_str() > > qemu-sockets: update socket_uri() and socket_parse() to be consistent > > net: stream: move to QIO to enable additional parameters > > tests/qtest: netdev: test stream and dgram backends > > net: stream: add QAPI events to report connection state > > > > Stefano Brivio (2): > > net: socket: Don't ignore EINVAL on netdev socket connection > > net: stream: Don't ignore EINVAL on netdev socket connection > > > > hmp-commands.hx | 2 +- > > include/net/net.h | 7 +- > > include/qemu/sockets.h | 4 +- > > monitor/hmp-cmds.c | 23 +- > > net/clients.h | 6 + > > net/dgram.c | 622 ++++++++++++++++++++++++++++++++++++ > > net/hub.c | 2 + > > net/l2tpv3.c | 3 +- > > net/meson.build | 2 + > > net/net.c | 186 ++++++++--- > > net/slirp.c | 5 +- > > net/socket.c | 36 +-- > > net/stream.c | 382 ++++++++++++++++++++++ > > net/tap-win32.c | 3 +- > > net/tap.c | 13 +- > > net/vde.c | 3 +- > > net/vhost-user.c | 3 +- > > net/vhost-vdpa.c | 2 +- > > qapi/net.json | 108 ++++++- > > qemu-options.hx | 14 + > > softmmu/vl.c | 16 +- > > tests/qtest/meson.build | 1 + > > tests/qtest/netdev-socket.c | 417 ++++++++++++++++++++++++ > > util/qemu-sockets.c | 25 ++ > > 24 files changed, 1757 insertions(+), 128 deletions(-) > > create mode 100644 net/dgram.c > > create mode 100644 net/stream.c > > create mode 100644 tests/qtest/netdev-socket.c > > > > -- > > 2.37.3 > > >
On 10/9/22 07:52, Jason Wang wrote: > On Thu, Oct 6, 2022 at 7:21 PM Michael S. Tsirkin <mst@redhat.com> wrote: >> >> On Wed, Oct 05, 2022 at 06:20:34PM +0200, Laurent Vivier wrote: >>> "-netdev socket" only supports inet sockets. >>> >>> It's not a complex task to add support for unix sockets, but >>> the socket netdev parameters are not defined to manage well unix >>> socket parameters. >> >> Looks good. >> >> Acked-by: Michael S. Tsirkin <mst@redhat.com> >> >> Belongs in Jason's tree. > > I've queued this series. I've found some minor problems. Could you queue incoming v11 instead? Thanks, Laurent > > Thanks > > >> >>> As discussed in: >>> >>> "socket.c added support for unix domain socket datagram transport" >>> https://lore.kernel.org/qemu-devel/1C0E1BC5-904F-46B0-8044-68E43E67BE60@gmail.com/ >>> >>> This series adds support of unix socket type using SocketAddress QAPI structure. >>> >>> Two new netdev backends, "stream" and "dgram" are added, that are barely a copy of "socket" >>> backend but they use the SocketAddress QAPI to provide socket parameters. >>> And then they also implement unix sockets (TCP and UDP). >>> >>> Some examples of CLI syntax: >>> >>> for TCP: >>> >>> -netdev stream,id=socket0,addr.type=inet,addr.host=localhost,addr.port=1234 >>> -netdev stream,id=socket0,server=off,addr.type=inet,addr.host=localhost,addr.port=1234 >>> >>> -netdev dgram,id=socket0,\ >>> local.type=inet,local.host=localhost,local.port=1234,\ >>> remote.type=inet,remote.host=localhost,remote.port=1235 >>> >>> for UNIX: >>> >>> -netdev stream,id=socket0,addr.type=unix,addr.path=/tmp/qemu0 >>> -netdev stream,id=socket0,server=off,addr.type=unix,addr.path=/tmp/qemu0 >>> >>> -netdev dgram,id=socket0,\ >>> local.type=unix,local.path=/tmp/qemu0,\ >>> remote.type=unix,remote.path=/tmp/qemu1 >>> >>> for FD: >>> >>> -netdev stream,id=socket0,addr.type=fd,addr.str=4 >>> -netdev stream,id=socket0,server=off,addr.type=fd,addr.str=5 >>> >>> -netdev dgram,id=socket0,local.type=fd,addr.str=4 >>> >>> v10: >>> - add Red Hat copyright >>> - initialize dgram_dst to NULL in SOCKET_ADDRESS_TYPE_FD >>> - remove redundente _stream / _dgram in functions name >>> - move net_dgram_init() into net_init_dgram() >>> - address Thomas' comments on qtest >>> - add a function qemu_set_info_str() to set info string >>> - tested stream netdev with fd type using qrap/passt and >>> "-netdev stream,addr.type=fd,server=off,addr.str=5,id=netdev0" >>> >>> v9: >>> - add events to report stream connection/disconnection >>> - remove from net/dgram.c send_fn, listen_fd, net_dgram_accept() >>> net_dgram_connect() and net_dgram_send() that are only >>> needed by net/stream.c >>> - remove from net/stream.c send_fn >>> - add Red Hat copyright >>> - add original net/socket.c Stefano's patch (EINVAL) >>> >>> v8: >>> - test ipv4 and ipv6 parameters (stream inet) >>> - test abstract parameter (stream unix) >>> - add SocketAddressInet supported parameters in qemu-options.hx >>> (only stream, supported by the move to QIO) >>> - with qio_channel_writev() replace (ret == -1 && errno == EAGAIN) >>> by (ret == QIO_CHANNEL_ERR_BLOCK) >>> >>> v7: >>> - add qtests >>> - update parameters table in net.json >>> - update socket_uri() and socket_parse() >>> >>> v6: >>> - s/netdev option/-netdev option/ PATCH 4 >>> - s/ / / >>> - update @NetdevStreamOptions and @NetdevDgramOptions comments >>> - update PATCH 4 description message >>> - add missing return in error case for unix stream socket >>> - split socket_uri() patch: move and rename, then change content >>> >>> v5: >>> - remove RFC prefix >>> - put the change of net_client_parse() into its own patch (exit() in the >>> function) >>> - update comments regarding netdev_is_modern() and netdev_parse_modern() >>> - update error case in net_stream_server_init() >>> - update qemu-options.hx with unix type >>> - fix HMP "info network" with unix protocol/server side. >>> >>> v4: >>> - net_client_parse() fails with exit() rather than with return. >>> - keep "{ 'name': 'vmnet-host', 'if': 'CONFIG_VMNET' }" on its >>> own line in qapi/net.json >>> - add a comment in qapi/net.json about parameters usage >>> - move netdev_is_modern() check to qemu_init() >>> - in netdev_is_modern(), check for JSON and use qemu_opts_do_parse() >>> to parse parameters and detect type value. >>> - add a blank line after copyright comment >>> >>> v3: >>> - remove support of "-net" for dgram and stream. They are only >>> supported with "-netdev" option. >>> - use &error_fatal directly in net_client_inits() >>> - update qemu-options.hx >>> - move to QIO for stream socket >>> >>> v2: >>> - use "stream" and "dgram" rather than "socket-ng,mode=stream" >>> and ""socket-ng,mode=dgram" >>> - extract code to bypass qemu_opts_parse_noisily() to >>> a new patch >>> - do not ignore EINVAL (Stefano) >>> - fix "-net" option >>> >>> CC: Ralph Schmieder <ralph.schmieder@gmail.com> >>> CC: Stefano Brivio <sbrivio@redhat.com> >>> CC: Daniel P. Berrangé <berrange@redhat.com> >>> CC: Markus Armbruster <armbru@redhat.com> >>> >>> Laurent Vivier (15): >>> net: introduce convert_host_port() >>> net: remove the @errp argument of net_client_inits() >>> net: simplify net_client_parse() error management >>> qapi: net: introduce a way to bypass qemu_opts_parse_noisily() >>> net: introduce qemu_set_info_str() function >>> qapi: net: add stream and dgram netdevs >>> net: stream: add unix socket >>> net: dgram: make dgram_dst generic >>> net: dgram: move mcast specific code from net_socket_fd_init_dgram() >>> net: dgram: add unix socket >>> qemu-sockets: move and rename SocketAddress_to_str() >>> qemu-sockets: update socket_uri() and socket_parse() to be consistent >>> net: stream: move to QIO to enable additional parameters >>> tests/qtest: netdev: test stream and dgram backends >>> net: stream: add QAPI events to report connection state >>> >>> Stefano Brivio (2): >>> net: socket: Don't ignore EINVAL on netdev socket connection >>> net: stream: Don't ignore EINVAL on netdev socket connection >>> >>> hmp-commands.hx | 2 +- >>> include/net/net.h | 7 +- >>> include/qemu/sockets.h | 4 +- >>> monitor/hmp-cmds.c | 23 +- >>> net/clients.h | 6 + >>> net/dgram.c | 622 ++++++++++++++++++++++++++++++++++++ >>> net/hub.c | 2 + >>> net/l2tpv3.c | 3 +- >>> net/meson.build | 2 + >>> net/net.c | 186 ++++++++--- >>> net/slirp.c | 5 +- >>> net/socket.c | 36 +-- >>> net/stream.c | 382 ++++++++++++++++++++++ >>> net/tap-win32.c | 3 +- >>> net/tap.c | 13 +- >>> net/vde.c | 3 +- >>> net/vhost-user.c | 3 +- >>> net/vhost-vdpa.c | 2 +- >>> qapi/net.json | 108 ++++++- >>> qemu-options.hx | 14 + >>> softmmu/vl.c | 16 +- >>> tests/qtest/meson.build | 1 + >>> tests/qtest/netdev-socket.c | 417 ++++++++++++++++++++++++ >>> util/qemu-sockets.c | 25 ++ >>> 24 files changed, 1757 insertions(+), 128 deletions(-) >>> create mode 100644 net/dgram.c >>> create mode 100644 net/stream.c >>> create mode 100644 tests/qtest/netdev-socket.c >>> >>> -- >>> 2.37.3 >>> >> >
On Wed, Oct 12, 2022 at 4:05 AM Laurent Vivier <lvivier@redhat.com> wrote: > > On 10/9/22 07:52, Jason Wang wrote: > > On Thu, Oct 6, 2022 at 7:21 PM Michael S. Tsirkin <mst@redhat.com> wrote: > >> > >> On Wed, Oct 05, 2022 at 06:20:34PM +0200, Laurent Vivier wrote: > >>> "-netdev socket" only supports inet sockets. > >>> > >>> It's not a complex task to add support for unix sockets, but > >>> the socket netdev parameters are not defined to manage well unix > >>> socket parameters. > >> > >> Looks good. > >> > >> Acked-by: Michael S. Tsirkin <mst@redhat.com> > >> > >> Belongs in Jason's tree. > > > > I've queued this series. > > I've found some minor problems. Could you queue incoming v11 instead? Yes. Done. Thanks > > Thanks, > Laurent > > > > > Thanks > > > > > >> > >>> As discussed in: > >>> > >>> "socket.c added support for unix domain socket datagram transport" > >>> https://lore.kernel.org/qemu-devel/1C0E1BC5-904F-46B0-8044-68E43E67BE60@gmail.com/ > >>> > >>> This series adds support of unix socket type using SocketAddress QAPI structure. > >>> > >>> Two new netdev backends, "stream" and "dgram" are added, that are barely a copy of "socket" > >>> backend but they use the SocketAddress QAPI to provide socket parameters. > >>> And then they also implement unix sockets (TCP and UDP). > >>> > >>> Some examples of CLI syntax: > >>> > >>> for TCP: > >>> > >>> -netdev stream,id=socket0,addr.type=inet,addr.host=localhost,addr.port=1234 > >>> -netdev stream,id=socket0,server=off,addr.type=inet,addr.host=localhost,addr.port=1234 > >>> > >>> -netdev dgram,id=socket0,\ > >>> local.type=inet,local.host=localhost,local.port=1234,\ > >>> remote.type=inet,remote.host=localhost,remote.port=1235 > >>> > >>> for UNIX: > >>> > >>> -netdev stream,id=socket0,addr.type=unix,addr.path=/tmp/qemu0 > >>> -netdev stream,id=socket0,server=off,addr.type=unix,addr.path=/tmp/qemu0 > >>> > >>> -netdev dgram,id=socket0,\ > >>> local.type=unix,local.path=/tmp/qemu0,\ > >>> remote.type=unix,remote.path=/tmp/qemu1 > >>> > >>> for FD: > >>> > >>> -netdev stream,id=socket0,addr.type=fd,addr.str=4 > >>> -netdev stream,id=socket0,server=off,addr.type=fd,addr.str=5 > >>> > >>> -netdev dgram,id=socket0,local.type=fd,addr.str=4 > >>> > >>> v10: > >>> - add Red Hat copyright > >>> - initialize dgram_dst to NULL in SOCKET_ADDRESS_TYPE_FD > >>> - remove redundente _stream / _dgram in functions name > >>> - move net_dgram_init() into net_init_dgram() > >>> - address Thomas' comments on qtest > >>> - add a function qemu_set_info_str() to set info string > >>> - tested stream netdev with fd type using qrap/passt and > >>> "-netdev stream,addr.type=fd,server=off,addr.str=5,id=netdev0" > >>> > >>> v9: > >>> - add events to report stream connection/disconnection > >>> - remove from net/dgram.c send_fn, listen_fd, net_dgram_accept() > >>> net_dgram_connect() and net_dgram_send() that are only > >>> needed by net/stream.c > >>> - remove from net/stream.c send_fn > >>> - add Red Hat copyright > >>> - add original net/socket.c Stefano's patch (EINVAL) > >>> > >>> v8: > >>> - test ipv4 and ipv6 parameters (stream inet) > >>> - test abstract parameter (stream unix) > >>> - add SocketAddressInet supported parameters in qemu-options.hx > >>> (only stream, supported by the move to QIO) > >>> - with qio_channel_writev() replace (ret == -1 && errno == EAGAIN) > >>> by (ret == QIO_CHANNEL_ERR_BLOCK) > >>> > >>> v7: > >>> - add qtests > >>> - update parameters table in net.json > >>> - update socket_uri() and socket_parse() > >>> > >>> v6: > >>> - s/netdev option/-netdev option/ PATCH 4 > >>> - s/ / / > >>> - update @NetdevStreamOptions and @NetdevDgramOptions comments > >>> - update PATCH 4 description message > >>> - add missing return in error case for unix stream socket > >>> - split socket_uri() patch: move and rename, then change content > >>> > >>> v5: > >>> - remove RFC prefix > >>> - put the change of net_client_parse() into its own patch (exit() in the > >>> function) > >>> - update comments regarding netdev_is_modern() and netdev_parse_modern() > >>> - update error case in net_stream_server_init() > >>> - update qemu-options.hx with unix type > >>> - fix HMP "info network" with unix protocol/server side. > >>> > >>> v4: > >>> - net_client_parse() fails with exit() rather than with return. > >>> - keep "{ 'name': 'vmnet-host', 'if': 'CONFIG_VMNET' }" on its > >>> own line in qapi/net.json > >>> - add a comment in qapi/net.json about parameters usage > >>> - move netdev_is_modern() check to qemu_init() > >>> - in netdev_is_modern(), check for JSON and use qemu_opts_do_parse() > >>> to parse parameters and detect type value. > >>> - add a blank line after copyright comment > >>> > >>> v3: > >>> - remove support of "-net" for dgram and stream. They are only > >>> supported with "-netdev" option. > >>> - use &error_fatal directly in net_client_inits() > >>> - update qemu-options.hx > >>> - move to QIO for stream socket > >>> > >>> v2: > >>> - use "stream" and "dgram" rather than "socket-ng,mode=stream" > >>> and ""socket-ng,mode=dgram" > >>> - extract code to bypass qemu_opts_parse_noisily() to > >>> a new patch > >>> - do not ignore EINVAL (Stefano) > >>> - fix "-net" option > >>> > >>> CC: Ralph Schmieder <ralph.schmieder@gmail.com> > >>> CC: Stefano Brivio <sbrivio@redhat.com> > >>> CC: Daniel P. Berrangé <berrange@redhat.com> > >>> CC: Markus Armbruster <armbru@redhat.com> > >>> > >>> Laurent Vivier (15): > >>> net: introduce convert_host_port() > >>> net: remove the @errp argument of net_client_inits() > >>> net: simplify net_client_parse() error management > >>> qapi: net: introduce a way to bypass qemu_opts_parse_noisily() > >>> net: introduce qemu_set_info_str() function > >>> qapi: net: add stream and dgram netdevs > >>> net: stream: add unix socket > >>> net: dgram: make dgram_dst generic > >>> net: dgram: move mcast specific code from net_socket_fd_init_dgram() > >>> net: dgram: add unix socket > >>> qemu-sockets: move and rename SocketAddress_to_str() > >>> qemu-sockets: update socket_uri() and socket_parse() to be consistent > >>> net: stream: move to QIO to enable additional parameters > >>> tests/qtest: netdev: test stream and dgram backends > >>> net: stream: add QAPI events to report connection state > >>> > >>> Stefano Brivio (2): > >>> net: socket: Don't ignore EINVAL on netdev socket connection > >>> net: stream: Don't ignore EINVAL on netdev socket connection > >>> > >>> hmp-commands.hx | 2 +- > >>> include/net/net.h | 7 +- > >>> include/qemu/sockets.h | 4 +- > >>> monitor/hmp-cmds.c | 23 +- > >>> net/clients.h | 6 + > >>> net/dgram.c | 622 ++++++++++++++++++++++++++++++++++++ > >>> net/hub.c | 2 + > >>> net/l2tpv3.c | 3 +- > >>> net/meson.build | 2 + > >>> net/net.c | 186 ++++++++--- > >>> net/slirp.c | 5 +- > >>> net/socket.c | 36 +-- > >>> net/stream.c | 382 ++++++++++++++++++++++ > >>> net/tap-win32.c | 3 +- > >>> net/tap.c | 13 +- > >>> net/vde.c | 3 +- > >>> net/vhost-user.c | 3 +- > >>> net/vhost-vdpa.c | 2 +- > >>> qapi/net.json | 108 ++++++- > >>> qemu-options.hx | 14 + > >>> softmmu/vl.c | 16 +- > >>> tests/qtest/meson.build | 1 + > >>> tests/qtest/netdev-socket.c | 417 ++++++++++++++++++++++++ > >>> util/qemu-sockets.c | 25 ++ > >>> 24 files changed, 1757 insertions(+), 128 deletions(-) > >>> create mode 100644 net/dgram.c > >>> create mode 100644 net/stream.c > >>> create mode 100644 tests/qtest/netdev-socket.c > >>> > >>> -- > >>> 2.37.3 > >>> > >> > > >