qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 for-3.2 v2 00/30] slirp: make it again a standalone project
@ 2018-11-21 22:06 Marc-André Lureau
  2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 01/30] fixup! net: do not depend on slirp internals Marc-André Lureau
                   ` (30 more replies)
  0 siblings, 31 replies; 57+ messages in thread
From: Marc-André Lureau @ 2018-11-21 22:06 UTC (permalink / raw)
  To: qemu-devel
  Cc: Zhang Chen, Li Zhijian, Jan Kiszka, Samuel Thibault, Jason Wang,
	Marc-André Lureau

Hi,

Based-on: https://people.debian.org/~sthibault/qemu.git/ slirp branch

This series goal is to allow building libslirp as an independent library.

While looking at making SLIRP a seperate running process, I thought
that having an independent library from QEMU would be a first step.

There has been some attempts to make slirp a seperate project in the past.
(https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg01092.html)
Unfortunately, they forked from QEMU and didn't provide enough
compatibility for QEMU to make use of it (in particular, vmstate
handling was removed, they lost git history etc). Furthermore, they
are not maintained as far as I can see.

I would propose to make slirp a seperate project, that can initially
be used by QEMU as a submodule, keeping Makefile.objs until a proper
shared library with stability guarantees etc is ready..

The subproject could created by preserving git tags, and cleaning up the code style, this way:

git filter-branch --tree-filter "if ls * 1> /dev/null 2>&1; then clang-format -i * /dev/null; fi " -f --subdirectory-filter "slirp" --prune-empty --tag-name-filter cat -- --all
(my clang-format https://gist.github.com/elmarco/cb20c8d92007df0e2fb8a2404678ac73)

v2:
 - rebased on top of maintainer tree (thanks for picking patches,
   and reducing the burden of long series!)
 - added "slirp: drop <Vista compatibility" (although it is a bit problematic)
 - follow a suggestion from Paolo, and refactor the exec_list/guestfwd
 - added "slirp: use virtual time for packet expiration", following Paolo suggestion
 - drop the "scale" argument from the timer API
 - changed the build-sys to group objects in slirp.mo, to allow
   slirp-cflags, among other benefits
 - move to glib logging, set G_LOG_DOMAIN, add SLIRP_DEBUG environment variable
 - document the added callbacks, as requested by Stefan H.
 - a few more cleanups

Marc-André Lureau (30):
  fixup! net: do not depend on slirp internals
  slirp: drop <Vista compatibility
  glib-compat: add g_spawn_async_with_fds() fallback
  slirp: simplify fork_exec()
  slirp: rename exec_list
  slirp: factor out guestfwd addition checks
  slirp: generalize guestfwd with a callback based approach
  net/slirp: simplify checking for cmd: prefix
  net/slirp: fix a few memory leaks
  slirp: use virtual time for packet expiration
  slirp: add clock_get_ns() callback
  slirp: add callbacks for timer
  build-sys: use a seperate slirp-obj-y && slirp.mo
  slirp: set G_LOG_DOMAIN
  slirp: replace error_report() and a fprintf with g_critical()
  slirp: replace some fprintf() with DEBUG_MISC
  slirp: replace a DEBUG block with WITH_ICMP_ERROR_MSG
  slirp: no need to make DPRINTF conditional on DEBUG
  slirp: always build with debug statements
  slirp: introduce SLIRP_DEBUG environment variable
  slirp: use %p for pointers format
  slirp: remove remaining DEBUG blocks
  slirp: replace DEBUG_ARGS with DEBUG_ARG
  slirp: call into g_debug() for DEBUG macros
  slirp: replace trace functions with DEBUG calls
  slirp: add a set_nonblock() callback
  slirp: replace qemu_notify_event() with a callback
  slirp: move QEMU state saving to a separate unit
  slirp: replace remaining QEMU dependency
  build-sys: add a basic meson build

 include/glib-compat.h |  56 +++++
 net/colo.h            |   1 +
 net/util.h            |  26 +++
 slirp/debug.h         |  45 ++--
 slirp/ip.h            |  14 +-
 slirp/ip6.h           |   5 +-
 slirp/ip6_icmp.h      |  16 +-
 slirp/libslirp.h      |  38 +++-
 slirp/misc.h          |  19 +-
 slirp/qtailq.h        | 218 +++++++++++++++++++
 slirp/sbuf.h          |   2 +-
 slirp/slirp.h         |  19 +-
 slirp/socket.h        |   5 +-
 slirp/state.h         |   9 +
 slirp/util.h          | 148 +++++++++++++
 net/slirp.c           |  94 +++++---
 slirp/arp_table.c     |  13 +-
 slirp/bootp.c         |   8 +-
 slirp/cksum.c         |   9 +-
 slirp/dhcpv6.c        |   8 +-
 slirp/dnssearch.c     |   1 -
 slirp/if.c            |   4 +-
 slirp/ip6_icmp.c      |  34 ++-
 slirp/ip6_input.c     |   3 +-
 slirp/ip6_output.c    |   6 +-
 slirp/ip_icmp.c       |  30 +--
 slirp/ip_input.c      |   1 -
 slirp/ip_output.c     |   1 -
 slirp/mbuf.c          |   1 -
 slirp/misc.c          | 132 ++++++------
 slirp/ncsi.c          |   1 -
 slirp/ndp_table.c     |  34 ++-
 slirp/sbuf.c          |   8 +-
 slirp/slirp.c         | 490 ++++++++----------------------------------
 slirp/socket.c        |  51 +++--
 slirp/state.c         | 394 +++++++++++++++++++++++++++++++++
 slirp/tcp_input.c     |  26 ++-
 slirp/tcp_output.c    |   3 +-
 slirp/tcp_subr.c      |  27 ++-
 slirp/tcp_timer.c     |   1 -
 slirp/tftp.c          |  14 +-
 slirp/udp.c           |  12 +-
 slirp/udp6.c          |  13 +-
 slirp/util.c          | 176 +++++++++++++++
 Makefile.objs         |   4 +-
 Makefile.target       |   5 +-
 slirp/Makefile.objs   |  39 +++-
 slirp/meson.build     |  48 +++++
 slirp/trace-events    |   5 -
 49 files changed, 1553 insertions(+), 764 deletions(-)
 create mode 100644 slirp/qtailq.h
 create mode 100644 slirp/state.h
 create mode 100644 slirp/util.h
 create mode 100644 slirp/state.c
 create mode 100644 slirp/util.c
 create mode 100644 slirp/meson.build
 delete mode 100644 slirp/trace-events

-- 
2.20.0.rc1

^ permalink raw reply	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2018-12-06 12:03 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-21 22:06 [Qemu-devel] [PATCH v2 for-3.2 v2 00/30] slirp: make it again a standalone project Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 01/30] fixup! net: do not depend on slirp internals Marc-André Lureau
2018-11-21 22:10   ` Samuel Thibault
2018-11-22  7:14     ` Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 02/30] slirp: drop <Vista compatibility Marc-André Lureau
2018-11-21 22:15   ` Samuel Thibault
2018-11-22 10:22   ` Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 03/30] glib-compat: add g_spawn_async_with_fds() fallback Marc-André Lureau
2018-11-21 22:16   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 04/30] slirp: simplify fork_exec() Marc-André Lureau
2018-11-21 22:16   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 05/30] slirp: rename exec_list Marc-André Lureau
2018-11-21 22:18   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 06/30] slirp: factor out guestfwd addition checks Marc-André Lureau
2018-11-21 22:47   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 07/30] slirp: generalize guestfwd with a callback based approach Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 08/30] net/slirp: simplify checking for cmd: prefix Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 09/30] net/slirp: fix a few memory leaks Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 10/30] slirp: use virtual time for packet expiration Marc-André Lureau
2018-11-21 22:23   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 11/30] slirp: add clock_get_ns() callback Marc-André Lureau
2018-11-21 22:49   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 12/30] slirp: add callbacks for timer Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 13/30] build-sys: use a seperate slirp-obj-y && slirp.mo Marc-André Lureau
2018-11-21 22:53   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 14/30] slirp: set G_LOG_DOMAIN Marc-André Lureau
2018-11-21 22:54   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 15/30] slirp: replace error_report() and a fprintf with g_critical() Marc-André Lureau
2018-11-21 22:28   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 16/30] slirp: replace some fprintf() with DEBUG_MISC Marc-André Lureau
2018-11-21 22:29   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 17/30] slirp: replace a DEBUG block with WITH_ICMP_ERROR_MSG Marc-André Lureau
2018-11-21 22:31   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 18/30] slirp: no need to make DPRINTF conditional on DEBUG Marc-André Lureau
2018-11-21 22:32   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 19/30] slirp: always build with debug statements Marc-André Lureau
2018-11-21 22:35   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 20/30] slirp: introduce SLIRP_DEBUG environment variable Marc-André Lureau
2018-11-21 22:36   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 21/30] slirp: use %p for pointers format Marc-André Lureau
2018-11-21 22:37   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 22/30] slirp: remove remaining DEBUG blocks Marc-André Lureau
2018-11-21 22:38   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 23/30] slirp: replace DEBUG_ARGS with DEBUG_ARG Marc-André Lureau
2018-11-21 22:43   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 24/30] slirp: call into g_debug() for DEBUG macros Marc-André Lureau
2018-11-21 22:58   ` Samuel Thibault
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 25/30] slirp: replace trace functions with DEBUG calls Marc-André Lureau
2018-11-21 23:00   ` Samuel Thibault
2018-11-22  7:45     ` Gerd Hoffmann
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 26/30] slirp: add a set_nonblock() callback Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 27/30] slirp: replace qemu_notify_event() with a callback Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 28/30] slirp: move QEMU state saving to a separate unit Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 29/30] slirp: replace remaining QEMU dependency Marc-André Lureau
2018-12-06 12:03   ` Marc-André Lureau
2018-11-21 22:06 ` [Qemu-devel] [PATCH v2 for-3.2 v2 30/30] build-sys: add a basic meson build Marc-André Lureau
2018-11-22  9:21 ` [Qemu-devel] [PATCH v2 for-3.2 v2 00/30] slirp: make it again a standalone project Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).