All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: netfilter-devel@vger.kernel.org, netfilter@vger.kernel.org
Cc: netfilter-announce@lists.netfilter.org, lwn@lwn.net,
	netdev@vger.kernel.org
Subject: [ANNOUNCE] nftables 1.1.4 release
Date: Wed, 6 Aug 2025 14:16:55 +0200	[thread overview]
Message-ID: <aJNHt1OW7w6SBmsv@calendula> (raw)

[-- Attachment #1: Type: text/plain, Size: 4194 bytes --]

Hi!

The Netfilter project proudly presents:

        nftables 1.1.4

This release contains enhancements and fixes:

- Add conntrack information to monitor trace command.

    Example output ("conntrack: " lines are new):

    trace id 32 t PRE_RAW packet: iif "enp0s3" ether saddr [..]
    trace id 32 t PRE_RAW rule tcp flags syn meta nftrace set 1 (verdict continue)
    trace id 32 t PRE_RAW policy accept
    trace id 32 t PRE_MANGLE conntrack: ct direction original ct state new ct id 2641368242
    trace id 32 t PRE_MANGLE packet: iif "enp0s3" ether saddr [..]
    trace id 32 t ct_new_pre rule jump rpfilter (verdict jump rpfilter)
    trace id 32 t PRE_MANGLE policy accept
    trace id 32 t INPUT conntrack: ct direction original ct state new ct status dnat-done ct id 2641368242
    trace id 32 t INPUT packet: iif "enp0s3" [..]
    trace id 32 t public_in rule tcp dport 443 accept (verdict accept)

- Add a 'check' fib result to check for routes:

     ... fib daddr . iif check exists
     ... fib daddr . iif check missing

  Allow to use it in maps:

     ... fib daddr check vmap { missing : drop, exists : accept }

  and set statements too:

     ... meta mark set fib daddr check . ct mark map { exists . 0x00000000 : 0x0000000a, missing . 0x00000001 : 0x0000000b }

- Better error reporting with re-declarations set/map with different types:

     Error: Cannot merge set with existing datamap of same name
      set z {
          ^

- Reduce memory consumption in sets consisting of a concatenation of intervals:

     table inet x {
            set y {
                    typeof ip saddr . tcp dport
                    flags interval
                    elements = {
                            0.1.2.0-0.1.2.240 . 0-1,
                            ...
                    }
            }
     }

    Using the set that appears in this example above, with 100k elements.

    Before: 123.80 Mbytes
    After:   80.19 Mbytes (-35.23%)

- Reduce memory consumption in maps with intervals:

      table inet x {
             map y {
                        typeof ip saddr : ip saddr
                        flags interval
                        elements = {
                            1.0.2.0-1.0.2.240 : 1.0.2.10,
                            ...
             }
      }

    Using the set that appreas in this example above, with 100k elements.

    Before: 74.36 Mbytes
    After: 62.39 Mbytes (-16.10%)

- Restore meta hour matching on ranges spanning date boundaries, eg.

    ...meta hour "21:00"-"02:00"

  N.B: This broke in the previous nftables 1.1.3 release.

- Display number of set elements in listing:

    table ip t {
       set s {
           type ipv4_addr
           size 65535      # count 1
           flags dynamic
           counter
           elements = { 1.1.1.1 counter packets 1 bytes 11 }
       }

- Allow to delete map via handle

    delete map t handle 4000

  N.B: In previous version, this is already possible for sets, this is
       fixing an inconsistency.

- Harden json parser detected via fuzzy testing.

- Simplify json flag field representation when single flags is used,
  so instead:

        "flags": [
          "interval"
        ],

  use:

        "flags": "interval",

- Quote device name in basechain and flowtable declarations, eg.

 table netdev filter2 {
        chain Main_Ingress2 {
               type filter hook ingress devices = { "eth0", "lo" } priority -500; policy accept;
        }
 }

... as well as man nft(8) documentation updates, and improvements in
tests/py and tests/shell for better coverage.

See changelog for more details (attached to this email).

You can download this new release from:

https://www.netfilter.org/projects/nftables/downloads.html
https://www.netfilter.org/pub/nftables/

To build the code, libnftnl >= 1.3.0 and libmnl >= 1.0.4 are required:

* https://netfilter.org/projects/libnftnl/index.html
* https://netfilter.org/projects/libmnl/index.html

Visit our wikipage for user documentation at:

* https://wiki.nftables.org

For the manpage reference, check man(8) nft.

In case of bugs and feature requests, file them via:

* https://bugzilla.netfilter.org

Happy firewalling.

[-- Attachment #2: changes-nftables-1.1.4.txt --]
[-- Type: text/plain, Size: 6003 bytes --]

Florian Westphal (43):
      src: remove bogus empty file
      src: netlink: fix crash when ops doesn't support udata
      tests: py: fix json single-flag output for fib & synproxy
      json: prevent null deref if chain->policy is not set
      json: work around fuzzer-induced assert crashes
      tests: helpers: suppress mount error messages
      mnl: catch bogus expressions before crashing
      evaluate: don't BUG on unexpected base datatype
      test: shell: nat_ftp: test files must be world-readable
      evaluate: rename recursion counter to recursion.binop
      evaluate: restrict allowed subtypes of concatenations
      src: BASECHAIN flag no longer implies presence of priority expression
      tests/py: prepare for set debug change
      debug: include kernel set information on cache fill
      src: print count variable in normal set listings
      tests: shell: add feature check for count output change
      tests/py: clean up set backend support fallout
      json: reject too long interface names
      evaluate: make sure chain jump name comes with a null byte
      evaluate: avoid double-free on error handling of bogus objref maps
      evaluate: check that set type is identical before merging
      evaluate: prevent merge of sets with incompatible keys
      tests: shell: add bitwise json dump files
      tests: shell: add optimize dump files
      tests: shell: add sets dumps
      tests: shell: add nft-i dumps
      tests: shell: add maps dumps
      tests: shell: add include dumps
      tests: shell: add a few nodump files
      tests: shell: move bogons to correct directory
      tests: shell: add json dump files
      Merge branch 'tests_shell_check_tree_fixes'
      src: split monitor trace code into new trace.c
      src: add conntrack information to trace monitor mode
      evaluate: check element key vs. set definition
      doc: expand on gc-interval, size and a few other set/map keywords
      tests: bogons: fix missing file name when logging
      evaluate: fix crash with invalid elements in set
      json: BASECHAIN flag no longer implies presence of priority expression
      evaluate: maps: check element data mapping matches set data definition
      parser_json: reject non-concat expression
      parser_json: fix assert due to empty interface name
      parser_bison: fix memory leak when parsing flowtable hook declaration

Michal Koutný (1):
      doc: Clarify cgroup meta variable

Pablo Neira Ayuso (21):
      tests: shell: skip egress in netdev chain release path test
      tests: shell: check if kernel supports for cgroupsv2 matching
      tests: shell: check for features not available in 5.4
      rule: skip fuzzy lookup if object name is not available
      cache: assert name is non-nul when looking up
      cache: pass name to cache_add()
      parser_bison: only reset by name is supported by now
      parser_bison: allow delete command with map via handle
      src: use constant range expression for interval+concatenation sets
      expression: constant range is not a singleton
      src: use EXPR_RANGE_VALUE in interval maps
      fib: allow to check if route exists in maps
      fib: allow to use it in set statements
      rule: print chain and flowtable devices in quotes
      evaluate: mappings require set expression
      evaluate: validate set expression type before accessing flags
      src: convert set to list expression
      src: detach set, list and concatenation expression layout
      tests: monitor: enclose device names in quotes
      build: add trace.h to Makefile
      build: Bump version to 1.1.4

Phil Sutter (31):
      tests/shell: Skip netdev_chain_dev_addremove on tainted kernels
      parser_json: Introduce parse_flags_array()
      doc: Fix typo in nat statement 'prefix' description
      json: Print single set flag as non-array
      json: Print single fib flag as non-array
      json: Print single synproxy flags as non-array
      json: Introduce json_add_array_new()
      tests: shell: Add test case for JSON 'flags' arrays
      tests: shell: Include kernel taint value in warning
      netlink: Avoid potential NULL-ptr deref parsing set elem expressions
      netlink: Catch unknown types when deserializing objects
      netlink_delinearize: Replace some BUG()s by error messages
      netlink: Pass netlink_ctx to netlink_delinearize_setelem()
      netlink: Keep going after set element parsing failures
      cache: Tolerate object deserialization failures
      doc: Basic documentation of anonymous chains
      netlink: Fix for potential crash parsing a flowtable
      netlink: Do not allocate a bogus flowtable priority expr
      monitor: Correctly print flowtable updates
      json: Dump flowtable hook spec only if present
      tests: monitor: Fix for single flag array avoidance
      tests: shell: Adjust to ifname-based hooks
      tests: py: Properly fix JSON equivalents for netdev/reject.t
      netlink: Avoid crash upon missing NFTNL_OBJ_CT_TIMEOUT_ARRAY attribute
      tests: shell: Fix ifname_based_hooks feature check
      mnl: Support NFNL_HOOK_TYPE_NFT_FLOWTABLE
      mnl: Call mnl_attr_nest_end() just once
      expression: Introduce is_symbol_value_expr() macro
      parser_json: Parse into symbol range expression if possible
      evaluate: Fix for 'meta hour' ranges spanning date boundaries
      doc: nft.8: Minor NAT STATEMENTS section review

Yi Chen (7):
      tests: shell: Update packetpath/flowtables
      tests: shell: Add a test case for FTP helper combined with NAT.
      test: shell: Don't use system nft binary
      test: shell: Introduce $NFT_TEST_LIBRARY_FILE, helper/lib.sh
      test: shell: Add wait_local_port_listen() helper to lib.sh
      test: shell: Add rate_limit test case for 'limit statement'.
      tests: shell: add type route chain test case

Zhongqiu Duan (2):
      tests: shell: use binary defined by run-tests.sh
      tests: py: re-enables nft-test.py to load the local nftables.py


             reply	other threads:[~2025-08-06 12:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-06 12:16 Pablo Neira Ayuso [this message]
2025-08-06 15:50 ` [ANNOUNCE] nftables 1.1.4 release Jan Engelhardt
2025-08-06 16:37   ` Pablo Neira Ayuso

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=aJNHt1OW7w6SBmsv@calendula \
    --to=pablo@netfilter.org \
    --cc=lwn@lwn.net \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-announce@lists.netfilter.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=netfilter@vger.kernel.org \
    /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.
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.