netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH nft 00/18] fixes and improvements for -o/--optimize
@ 2022-06-20  8:31 Pablo Neira Ayuso
  2022-06-20  8:31 ` [PATCH nft 01/18] optimize: do not compare relational expression rhs when collecting statements Pablo Neira Ayuso
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2022-06-20  8:31 UTC (permalink / raw)
  To: netfilter-devel

Hi,

The following patchset contains a batch with fix/improvements for
-o/--optimize.

1) Fix statement comparison, leading to incorrect rule matching to be merged.

2) Do not merge rules using set reference.

3) Do not print stateful information, eg. counter packets 0 bytes 0

4) Drop comments when merging.

5) Fix reject statement comparison.

6) Do not fully compare verdict statement, otherwise statement vs rule matrix
   gets multiple occurrences of this statement.

7) Add missing expressions used in relationals: osf, xfrm, fib, numgen, hash.

8) Add binary expression support.

9) Add unsupported statement, to avoid merging rules with statements that are
   not yet supported.

10) Only merge relationals with OP_IMPLICIT and OP_EQ.

11) Assume verdict is the same when rule specifies no verdict.

12) Remove support for limit statement, not actually supported yet. Merging
    rules with the limit statement require a new class of transformation not
    yet supported.

13) Release top level scope to avoid a bogus variable redefinition error
    when using -c and -o.

And many new tests.

This infrastructure is new code, please help testing and reporting bugs
running it on your existing rulesets.

Thanks.

Pablo Neira Ayuso (18):
  optimize: do not compare relational expression rhs when collecting statements
  optimize: do not merge rules with set reference in rhs
  optimize: do not print stateful information
  optimize: remove comment after merging
  optimize: fix reject statement
  optimize: fix verdict map merging
  optimize: add osf expression support
  optimize: add xfrm expression support
  optimize: add fib expression support
  optimize: add binop expression support
  optimize: add numgen expression support
  optimize: add hash expression support
  optimize: add unsupported statement
  tests: shell: run -c -o on ruleset
  optimize: only merge OP_IMPLICIT and OP_EQ relational
  optimize: assume verdict is same when rules have no verdict
  optimize: limit statement is not supported yet
  libnftables: release top level scope

 src/libnftables.c                             |   2 +
 src/optimize.c                                | 205 ++++++++++++++----
 .../optimizations/dumps/merge_reject.nft      |  13 ++
 .../optimizations/dumps/skip_merge.nft        |  23 ++
 .../optimizations/dumps/skip_non_eq.nft       |   6 +
 .../optimizations/dumps/skip_unsupported.nft  |   7 +
 .../testcases/optimizations/merge_reject      |  26 +++
 .../shell/testcases/optimizations/merge_stmts |   6 +-
 tests/shell/testcases/optimizations/ruleset   | 168 ++++++++++++++
 .../shell/testcases/optimizations/skip_merge  |  34 +++
 .../shell/testcases/optimizations/skip_non_eq |  12 +
 .../testcases/optimizations/skip_unsupported  |  14 ++
 tests/shell/testcases/optimizations/variables |  15 ++
 13 files changed, 488 insertions(+), 43 deletions(-)
 create mode 100644 tests/shell/testcases/optimizations/dumps/merge_reject.nft
 create mode 100644 tests/shell/testcases/optimizations/dumps/skip_merge.nft
 create mode 100644 tests/shell/testcases/optimizations/dumps/skip_non_eq.nft
 create mode 100644 tests/shell/testcases/optimizations/dumps/skip_unsupported.nft
 create mode 100755 tests/shell/testcases/optimizations/merge_reject
 create mode 100755 tests/shell/testcases/optimizations/ruleset
 create mode 100755 tests/shell/testcases/optimizations/skip_merge
 create mode 100755 tests/shell/testcases/optimizations/skip_non_eq
 create mode 100755 tests/shell/testcases/optimizations/skip_unsupported
 create mode 100755 tests/shell/testcases/optimizations/variables

-- 
2.30.2


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

end of thread, other threads:[~2022-06-23 18:05 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-20  8:31 [PATCH nft 00/18] fixes and improvements for -o/--optimize Pablo Neira Ayuso
2022-06-20  8:31 ` [PATCH nft 01/18] optimize: do not compare relational expression rhs when collecting statements Pablo Neira Ayuso
2022-06-20  8:31 ` [PATCH nft 02/18] optimize: do not merge rules with set reference in rhs Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 03/18] optimize: do not print stateful information Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 04/18] optimize: remove comment after merging Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 05/18] optimize: fix reject statement Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 06/18] optimize: fix verdict map merging Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 07/18] optimize: add osf expression support Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 08/18] optimize: add xfrm " Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 09/18] optimize: add fib " Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 10/18] optimize: add binop " Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 11/18] optimize: add numgen " Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 12/18] optimize: add hash " Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 13/18] optimize: add unsupported statement Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 14/18] tests: shell: run -c -o on ruleset Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 15/18] optimize: only merge OP_IMPLICIT and OP_EQ relational Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 16/18] optimize: assume verdict is same when rules have no verdict Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 17/18] optimize: limit statement is not supported yet Pablo Neira Ayuso
2022-06-20  8:32 ` [PATCH nft 18/18] libnftables: release top level scope Pablo Neira Ayuso
2022-06-23 17:17 ` [PATCH nft 00/18] fixes and improvements for -o/--optimize Pablo Neira Ayuso

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).