From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45692) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dfpy7-00059e-7R for qemu-devel@nongnu.org; Thu, 10 Aug 2017 12:05:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dfpy6-0003Fo-1l for qemu-devel@nongnu.org; Thu, 10 Aug 2017 12:05:55 -0400 From: "Daniel P. Berrange" Date: Thu, 10 Aug 2017 17:04:43 +0100 Message-Id: <20170810160451.32723-1-berrange@redhat.com> Subject: [Qemu-devel] [PATCH 0/8] Enable full IPv4/IPv6 dual stack support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Eric Blake , Paolo Bonzini , Kevin Wolf , Max Reitz , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Juan Quintela , "Dr. David Alan Gilbert" , Gerd Hoffmann , qemu-block@nongnu.org, "Daniel P. Berrange" Currently all the network listeners in QEMU, except the VNC server, are restricted to listening on a single socket. This makes it impossible to fully support IPv4/IPv6 dual stack. We're restricted to using IPV6_V6ONLY=0 to listen on both protocols from a single socket, but this doesn't work at all on OpenBSD, and even where supported it is quite crude (only really works for localhost and wildcard addresses). This patch series introduces a new object QIONetListener, which encapsulates multiple QIOChannelSocket listeners. This makes it trivial to support multiple listening sockets in any part of QEMU. Daniel P. Berrange (8): tests: add functional test validating ipv4/ipv6 address flag handling io: introduce a network socket listener API blockdev: convert internal NBD server to QIONetListener blockdev: convert qemu-nbd server to QIONetListener migration: convert socket server to QIONetListener chardev: convert the socket server to QIONetListener ui: convert VNC server to QIONetListener sockets: fix parsing of ipv4/ipv6 opts in parse_socket_addr blockdev-nbd.c | 50 +-- chardev/char-socket.c | 70 ++-- include/io/net-listener.h | 174 +++++++++ io/Makefile.objs | 1 + io/net-listener.c | 315 ++++++++++++++++ migration/socket.c | 44 +-- qemu-nbd.c | 50 +-- tests/.gitignore | 1 + tests/Makefile.include | 3 + tests/test-sockets-proto.c | 906 +++++++++++++++++++++++++++++++++++++++++++++ ui/vnc.c | 194 +++------- ui/vnc.h | 9 +- util/qemu-sockets.c | 36 +- 13 files changed, 1563 insertions(+), 290 deletions(-) create mode 100644 include/io/net-listener.h create mode 100644 io/net-listener.c create mode 100644 tests/test-sockets-proto.c -- 2.13.3