All of lore.kernel.org
 help / color / mirror / Atom feed
* [iptables PATCH v2 0/8] nft: Implement forward compat for future binaries
@ 2024-10-09 11:48 Phil Sutter
  2024-10-09 11:48 ` [iptables PATCH v2 1/8] nft: Make add_log() static Phil Sutter
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: Phil Sutter @ 2024-10-09 11:48 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Florian Westphal, Pablo Neira Ayuso, Jan Engelhardt

Changes since v1:
- Split the parser into a separate patch for easier backporting by
  distributions.
- Make the writer opt-in, allow users to force the parser fallback at
  run-time.
- Document the feature in man pages.

Time to abandon earlier attempts at providing compatibility for old
binaries, choose the next best option which is not relying upon any
kernel changes.

Basically, all extensions replaced by native bytecode are appended to
rule userdata so when nftnl rule parsing code fails, it may retry
omitting all these expressions and restoring an extension from userdata
instead.

The idea behind this is that extensions are stable which relieves native
bytecode from being the same. With this series in place, one may
(re-)start converting extensions into native nftables bytecode again.

Appending rule userdata upon creation is inactive by default and enabled
via --compat option or XTABLES_COMPAT env variable. The parser will fall
back to userdata automatically if present and parsing fails.

Patches 1-3 are preparation. Patches 4 and 5 implement the parser side,
patches 6 and 7 implement the writer and patch 8 finally extends
iptables-test.py to cover the new code.

Phil Sutter (8):
  nft: Make add_log() static
  nft: ruleparse: Introduce nft_parse_rule_expr()
  nft: __add_{match,target}() can't fail
  nft: Introduce UDATA_TYPE_COMPAT_EXT
  nft-ruleparse: Fallback to compat expressions in userdata
  nft: Pass nft_handle into add_{action,match}()
  nft: Embed compat extensions in rule userdata
  tests: iptables-test: Add nft-compat variant

 configure.ac                   |   9 ++
 iptables-test.py               |  14 ++-
 iptables/Makefile.am           |   1 +
 iptables/arptables-nft.8       |  12 ++
 iptables/ebtables-nft.8        |  12 ++
 iptables/iptables-restore.8.in |  12 ++
 iptables/iptables.8.in         |  12 ++
 iptables/nft-arp.c             |   2 +-
 iptables/nft-bridge.c          |   9 +-
 iptables/nft-compat.c          | 222 +++++++++++++++++++++++++++++++++
 iptables/nft-compat.h          |  54 ++++++++
 iptables/nft-ipv4.c            |   2 +-
 iptables/nft-ipv6.c            |   2 +-
 iptables/nft-ruleparse.c       |  90 ++++++++-----
 iptables/nft-ruleparse.h       |   4 +
 iptables/nft.c                 | 111 ++++++++++-------
 iptables/nft.h                 |  24 +++-
 iptables/xshared.c             |   7 ++
 iptables/xshared.h             |   1 +
 iptables/xtables-arp.c         |   1 +
 iptables/xtables-eb.c          |   4 +
 iptables/xtables-nft.8         |  11 ++
 iptables/xtables-restore.c     |  15 ++-
 iptables/xtables.c             |   3 +
 24 files changed, 544 insertions(+), 90 deletions(-)
 create mode 100644 iptables/nft-compat.c
 create mode 100644 iptables/nft-compat.h

-- 
2.43.0


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

end of thread, other threads:[~2025-04-10 16:47 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-09 11:48 [iptables PATCH v2 0/8] nft: Implement forward compat for future binaries Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 1/8] nft: Make add_log() static Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 2/8] nft: ruleparse: Introduce nft_parse_rule_expr() Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 3/8] nft: __add_{match,target}() can't fail Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 4/8] nft: Introduce UDATA_TYPE_COMPAT_EXT Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 5/8] nft-ruleparse: Fallback to compat expressions in userdata Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 6/8] nft: Pass nft_handle into add_{action,match}() Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 7/8] nft: Embed compat extensions in rule userdata Phil Sutter
2024-10-09 11:48 ` [iptables PATCH v2 8/8] tests: iptables-test: Add nft-compat variant Phil Sutter
2025-04-10 16:47 ` [iptables PATCH v2 0/8] nft: Implement forward compat for future binaries Phil Sutter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.