public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>, passt-dev@passt.top
Cc: David Gibson <david@gibson.dropbear.id.au>
Subject: [PATCH v3 00/25] RFC: Read-only dynamic update implementation
Date: Mon, 23 Mar 2026 18:37:07 +1100	[thread overview]
Message-ID: <20260323073732.3158468-1-david@gibson.dropbear.id.au> (raw)

Here's a new draft of dynamic updates.  This now can successfully
update rules, though I've not tested it very extensively.  Essentially
this is just barely enough to work, it still could do with rather a
lot of polish.

Patches 1..12/22 are preliminary reworks that make moderate sense even
without pesto - feel free to apply if you're happy with them.

Changes in v3:
 * Removed already applied ASSERT() rename
 * Renamed serialisation functions
 * Incorporated Stefano's extensions, reworked and fixed
 * Several additional cleanups / preliminary reworks
Changes in v2:
 * Removed already applied cleanups
 * Reworked assert() patch to handle -DNDEBUG properly
 * Numerous extra patches:
   * Factored out serialisation helpers and use them for migration as
     well
   * Reworked to allow ip.[ch] and inany.[ch] to be shared with pesto
   * Reworks to share some forwarding rule datatypes with pesto
   * Implemented sending pif names and current ruleset to pesto

David Gibson (22):
  conf: runas can be const
  vhost_user: Fix assorted minor cppcheck warnings
  serialise: Split functions user for serialisation from util.c
  serialise: Add helpers for serialising unsigned integers
  fwd: Move selecting correct scan bitmap into fwd_sync_one()
  fwd: Look up rule index in fwd_sync_one()
  fwd: Store forwarding tables indexed by (origin) pif
  fwd: Allow FWD_DUAL_STACK_ANY flag to be passed directly to
    fwd_rule_add()
  fwd, conf: Expose ephemeral ports as bitmap rather than function
  conf: Don't bother complaining about overlapping excluded ranges
  conf: Move check for mapping port 0 to caller
  conf: Move check for disabled interfaces earlier
  pesto: Introduce stub configuration interface and tool
  pesto: Add command line option parsing and debug messages
  pesto: Expose list of pifs to pesto
  ip: Prepare ip.[ch] for sharing with pesto tool
  inany: Prepare inany.[ch] for sharing with pesto tool
  fwd: Split forwading rule specification from its implementation state
  ip: Define a bound for the string returned by ipproto_name()
  fwd_rule: Move forwarding rule text formatting to common code
  pesto: Read current ruleset from passt/pasta and display it
  conf, fwd: Allow switching to new rules received from pesto

Stefano Brivio (3):
  conf: Move port parsing functions to own file, ports.c
  conf, fwd, ports, util: Move things around for pesto
  pesto, conf: Parse, send and receive new rules

 .gitignore   |   2 +
 Makefile     |  42 +--
 common.h     | 178 +++++++++++++
 conf.c       | 740 ++++++++++++++++++++++++---------------------------
 conf.h       |   2 +
 epoll_type.h |   4 +
 flow.c       |  37 ++-
 fwd.c        | 347 +++++++-----------------
 fwd.h        |  82 +-----
 fwd_rule.c   | 204 ++++++++++++++
 fwd_rule.h   | 112 ++++++++
 inany.c      |  16 +-
 inany.h      |  16 +-
 iov.c        |   1 +
 ip.c         |  74 ++----
 ip.h         |   4 +-
 lineread.c   |   1 -
 log.c        |   1 +
 log.h        |  33 +++
 migrate.c    |   1 +
 passt.1      |   5 +
 passt.c      |   9 +
 passt.h      |  14 +-
 pcap.c       |   1 +
 pesto.1      |  46 ++++
 pesto.c      | 412 ++++++++++++++++++++++++++++
 pesto.h      |  34 +++
 pif.h        |   2 +
 ports.c      | 444 +++++++++++++++++++++++++++++++
 ports.h      |  48 ++++
 serialise.c  | 147 ++++++++++
 serialise.h  |  24 ++
 siphash.h    |  13 +
 tap.c        |  52 ++++
 tcp.c        |   1 +
 util.c       | 154 +----------
 util.h       |  87 ------
 vhost_user.c |  16 +-
 virtio.c     |   1 +
 virtio.h     |   2 +-
 vu_common.c  |   2 +-
 41 files changed, 2334 insertions(+), 1077 deletions(-)
 create mode 100644 common.h
 create mode 100644 fwd_rule.c
 create mode 100644 fwd_rule.h
 create mode 100644 pesto.1
 create mode 100644 pesto.c
 create mode 100644 pesto.h
 create mode 100644 ports.c
 create mode 100644 ports.h
 create mode 100644 serialise.c
 create mode 100644 serialise.h

-- 
2.53.0


             reply	other threads:[~2026-03-23  8:32 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-23  7:37 David Gibson [this message]
2026-03-23  7:37 ` [PATCH v3 01/25] conf: runas can be const David Gibson
2026-03-23  7:37 ` [PATCH v3 02/25] vhost_user: Fix assorted minor cppcheck warnings David Gibson
2026-03-23  7:37 ` [PATCH v3 03/25] serialise: Split functions user for serialisation from util.c David Gibson
2026-03-25  0:54   ` Stefano Brivio
2026-03-25  1:50     ` David Gibson
2026-03-23  7:37 ` [PATCH v3 04/25] serialise: Add helpers for serialising unsigned integers David Gibson
2026-03-23  7:37 ` [PATCH v3 05/25] fwd: Move selecting correct scan bitmap into fwd_sync_one() David Gibson
2026-03-23  7:37 ` [PATCH v3 06/25] fwd: Look up rule index in fwd_sync_one() David Gibson
2026-03-23  7:37 ` [PATCH v3 07/25] fwd: Store forwarding tables indexed by (origin) pif David Gibson
2026-03-25  0:54   ` Stefano Brivio
2026-03-25  4:04     ` David Gibson
2026-03-23  7:37 ` [PATCH v3 08/25] fwd: Allow FWD_DUAL_STACK_ANY flag to be passed directly to fwd_rule_add() David Gibson
2026-03-25  0:54   ` Stefano Brivio
2026-03-25  4:07     ` David Gibson
2026-03-23  7:37 ` [PATCH v3 09/25] fwd, conf: Expose ephemeral ports as bitmap rather than function David Gibson
2026-03-23  7:37 ` [PATCH v3 10/25] conf: Don't bother complaining about overlapping excluded ranges David Gibson
2026-03-23  7:37 ` [PATCH v3 11/25] conf: Move check for mapping port 0 to caller David Gibson
2026-03-23  7:37 ` [PATCH v3 12/25] conf: Move check for disabled interfaces earlier David Gibson
2026-03-23  7:37 ` [PATCH v3 13/25] pesto: Introduce stub configuration interface and tool David Gibson
2026-03-25  0:54   ` Stefano Brivio
2026-03-23  7:37 ` [PATCH v3 14/25] pesto: Add command line option parsing and debug messages David Gibson
2026-03-25  0:55   ` Stefano Brivio
2026-03-25  4:27     ` David Gibson
2026-03-23  7:37 ` [PATCH v3 15/25] pesto: Expose list of pifs to pesto David Gibson
2026-03-25  0:56   ` Stefano Brivio
2026-03-25  4:34     ` David Gibson
2026-03-25  8:18       ` Stefano Brivio
2026-03-25  8:31         ` David Gibson
2026-03-23  7:37 ` [PATCH v3 16/25] ip: Prepare ip.[ch] for sharing with pesto tool David Gibson
2026-03-23  7:37 ` [PATCH v3 17/25] inany: Prepare inany.[ch] " David Gibson
2026-03-23  7:37 ` [PATCH v3 18/25] fwd: Split forwading rule specification from its implementation state David Gibson
2026-03-23  7:37 ` [PATCH v3 19/25] ip: Define a bound for the string returned by ipproto_name() David Gibson
2026-03-23  7:37 ` [PATCH v3 20/25] fwd_rule: Move forwarding rule text formatting to common code David Gibson
2026-03-25  0:56   ` Stefano Brivio
2026-03-25  4:42     ` David Gibson
2026-03-25  8:18       ` Stefano Brivio
2026-03-25 23:54         ` David Gibson
2026-03-23  7:37 ` [PATCH v3 21/25] pesto: Read current ruleset from passt/pasta and display it David Gibson
2026-03-25  0:56   ` Stefano Brivio
2026-03-25  4:43     ` David Gibson
2026-03-23  7:37 ` [PATCH v3 22/25] conf: Move port parsing functions to own file, ports.c David Gibson
2026-03-23  7:37 ` [PATCH v3 23/25] conf, fwd, ports, util: Move things around for pesto David Gibson
2026-03-23  7:37 ` [PATCH v3 24/25] pesto, conf: Parse, send and receive new rules David Gibson
2026-03-23  7:37 ` [PATCH v3 25/25] conf, fwd: Allow switching to new rules received from pesto David Gibson
2026-03-23  8:38 ` [PATCH v3 00/25] RFC: Read-only dynamic update implementation David Gibson
2026-03-25  0:56 ` Stefano Brivio
2026-03-25  1:00   ` Stefano Brivio
2026-03-25  4:44     ` David Gibson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260323073732.3158468-1-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=passt-dev@passt.top \
    --cc=sbrivio@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

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 IMAP folder(s).