Add some tests to validate setting payload fields and marks with statement arguments that include binops with variable RHS operands. Signed-off-by: Jeremy Sowden <jeremy@xxxxxxxxxx> --- tests/shell/testcases/chains/0040mark_shift_2 | 11 +++++++++++ tests/shell/testcases/chains/0041payload_variable_0 | 11 +++++++++++ tests/shell/testcases/chains/0041payload_variable_1 | 11 +++++++++++ tests/shell/testcases/chains/0041payload_variable_2 | 11 +++++++++++ tests/shell/testcases/chains/0041payload_variable_3 | 11 +++++++++++ .../shell/testcases/chains/dumps/0040mark_shift_2.nft | 6 ++++++ .../testcases/chains/dumps/0041payload_variable_0.nft | 6 ++++++ .../testcases/chains/dumps/0041payload_variable_1.nft | 6 ++++++ .../testcases/chains/dumps/0041payload_variable_2.nft | 6 ++++++ .../testcases/chains/dumps/0041payload_variable_3.nft | 6 ++++++ 10 files changed, 85 insertions(+) create mode 100755 tests/shell/testcases/chains/0040mark_shift_2 create mode 100755 tests/shell/testcases/chains/0041payload_variable_0 create mode 100755 tests/shell/testcases/chains/0041payload_variable_1 create mode 100755 tests/shell/testcases/chains/0041payload_variable_2 create mode 100755 tests/shell/testcases/chains/0041payload_variable_3 create mode 100644 tests/shell/testcases/chains/dumps/0040mark_shift_2.nft create mode 100644 tests/shell/testcases/chains/dumps/0041payload_variable_0.nft create mode 100644 tests/shell/testcases/chains/dumps/0041payload_variable_1.nft create mode 100644 tests/shell/testcases/chains/dumps/0041payload_variable_2.nft create mode 100644 tests/shell/testcases/chains/dumps/0041payload_variable_3.nft diff --git a/tests/shell/testcases/chains/0040mark_shift_2 b/tests/shell/testcases/chains/0040mark_shift_2 new file mode 100755 index 000000000000..2ff3418bdd3f --- /dev/null +++ b/tests/shell/testcases/chains/0040mark_shift_2 @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +RULESET=" + add table t + add chain t c { type filter hook input priority mangle; } + add rule t c ct mark set ct mark and 0xffff0000 or meta mark and 0xffff +" + +$NFT -f - <<< "$RULESET" diff --git a/tests/shell/testcases/chains/0041payload_variable_0 b/tests/shell/testcases/chains/0041payload_variable_0 new file mode 100755 index 000000000000..c9819ff4ab88 --- /dev/null +++ b/tests/shell/testcases/chains/0041payload_variable_0 @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +RULESET=" + add table t + add chain t c { type filter hook output priority mangle; } + add rule ip t c tcp dport set tcp dport +" + +$NFT -f - <<< "$RULESET" diff --git a/tests/shell/testcases/chains/0041payload_variable_1 b/tests/shell/testcases/chains/0041payload_variable_1 new file mode 100755 index 000000000000..e9b1e1dde515 --- /dev/null +++ b/tests/shell/testcases/chains/0041payload_variable_1 @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +RULESET=" + add table t + add chain t c { type filter hook output priority mangle; } + add rule ip t c tcp dport set tcp dport lshift 1 +" + +$NFT -f - <<< "$RULESET" diff --git a/tests/shell/testcases/chains/0041payload_variable_2 b/tests/shell/testcases/chains/0041payload_variable_2 new file mode 100755 index 000000000000..5a458ef5d525 --- /dev/null +++ b/tests/shell/testcases/chains/0041payload_variable_2 @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +RULESET=" + add table t + add chain t c { type filter hook output priority mangle; } + add rule ip t c ip dscp set ip dscp +" + +$NFT -f - <<< "$RULESET" diff --git a/tests/shell/testcases/chains/0041payload_variable_3 b/tests/shell/testcases/chains/0041payload_variable_3 new file mode 100755 index 000000000000..0375399c3d0f --- /dev/null +++ b/tests/shell/testcases/chains/0041payload_variable_3 @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +RULESET=" + add table t + add chain t c { type filter hook output priority mangle; } + add rule ip t c ip dscp set ip dscp or 0x3 +" + +$NFT -f - <<< "$RULESET" diff --git a/tests/shell/testcases/chains/dumps/0040mark_shift_2.nft b/tests/shell/testcases/chains/dumps/0040mark_shift_2.nft new file mode 100644 index 000000000000..14f2d1685706 --- /dev/null +++ b/tests/shell/testcases/chains/dumps/0040mark_shift_2.nft @@ -0,0 +1,6 @@ +table ip t { + chain c { + type filter hook input priority mangle; policy accept; + ct mark set ct mark & 0xffff0000 | meta mark & 0x0000ffff + } +} diff --git a/tests/shell/testcases/chains/dumps/0041payload_variable_0.nft b/tests/shell/testcases/chains/dumps/0041payload_variable_0.nft new file mode 100644 index 000000000000..731949e6b355 --- /dev/null +++ b/tests/shell/testcases/chains/dumps/0041payload_variable_0.nft @@ -0,0 +1,6 @@ +table ip t { + chain c { + type filter hook output priority mangle; policy accept; + tcp dport set tcp dport + } +} diff --git a/tests/shell/testcases/chains/dumps/0041payload_variable_1.nft b/tests/shell/testcases/chains/dumps/0041payload_variable_1.nft new file mode 100644 index 000000000000..2cd87a4dc8e1 --- /dev/null +++ b/tests/shell/testcases/chains/dumps/0041payload_variable_1.nft @@ -0,0 +1,6 @@ +table ip t { + chain c { + type filter hook output priority mangle; policy accept; + tcp dport set tcp dport << 1 + } +} diff --git a/tests/shell/testcases/chains/dumps/0041payload_variable_2.nft b/tests/shell/testcases/chains/dumps/0041payload_variable_2.nft new file mode 100644 index 000000000000..d1e7adb92c4c --- /dev/null +++ b/tests/shell/testcases/chains/dumps/0041payload_variable_2.nft @@ -0,0 +1,6 @@ +table ip t { + chain c { + type filter hook output priority mangle; policy accept; + ip dscp set ip dscp + } +} diff --git a/tests/shell/testcases/chains/dumps/0041payload_variable_3.nft b/tests/shell/testcases/chains/dumps/0041payload_variable_3.nft new file mode 100644 index 000000000000..52b3a833175a --- /dev/null +++ b/tests/shell/testcases/chains/dumps/0041payload_variable_3.nft @@ -0,0 +1,6 @@ +table ip t { + chain c { + type filter hook output priority mangle; policy accept; + ip dscp set ip dscp | 0x03 + } +} -- 2.25.1