summaryrefslogtreecommitdiffstats
path: root/tests/shell/features/bitwise_multireg.nft
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2024-11-19 00:18:28 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2024-12-04 15:35:55 +0100
commit54bfc38c522babe709e951f1fd128ff725b36704 (patch)
tree4432fccc08834428082c176fab42cbb3e880e819 /tests/shell/features/bitwise_multireg.nft
parentbc0311378285d41850e3508df905d75959ba4239 (diff)
src: allow binop expressions with variable right-hand operandsHEADmaster
Hitherto, the kernel has required constant values for the `xor` and `mask` attributes of boolean bitwise expressions. This has meant that the right-hand operand of a boolean binop must be constant. Now the kernel has support for AND, OR and XOR operations with right-hand operands passed via registers, we can relax this restriction. Allow non-constant right-hand operands if the left-hand operand is not constant, e.g.: ct mark & 0xffff0000 | meta mark & 0xffff The kernel now supports performing AND, OR and XOR operations directly, on one register and an immediate value or on two registers, so we need to be able to generate and parse bitwise boolean expressions of this form. If a boolean operation has a constant RHS, we continue to send a mask-and-xor expression to the kernel. Add tests for {ct,meta} mark with variable RHS operands. JSON support is also included. This requires Linux kernel >= 6.13-rc. [ Originally posted as patch 1/8 and 6/8 which has been collapsed and simplified to focus on initial {ct,meta} mark support. Tests have been extracted from 8/8 including a tests/py fix to payload output due to incorrect output in original patchset. JSON support has been extracted from patch 7/8 --pablo] Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'tests/shell/features/bitwise_multireg.nft')
-rw-r--r--tests/shell/features/bitwise_multireg.nft5
1 files changed, 5 insertions, 0 deletions
diff --git a/tests/shell/features/bitwise_multireg.nft b/tests/shell/features/bitwise_multireg.nft
new file mode 100644
index 00000000..cfce5a39
--- /dev/null
+++ b/tests/shell/features/bitwise_multireg.nft
@@ -0,0 +1,5 @@
+table inet test {
+ chain y {
+ ct mark set ct mark | meta mark
+ }
+}