From c64457cff9673fbb41f613a67e158b4d62235c09 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Fri, 24 May 2019 15:06:50 +0200 Subject: src: Allow goto and jump to a variable This patch introduces the use of nft input files variables in 'jump' and 'goto' statements, e.g. define dest = ber add table ip foo add chain ip foo bar {type filter hook input priority 0;} add chain ip foo ber add rule ip foo ber counter add rule ip foo bar jump $dest table ip foo { chain bar { type filter hook input priority filter; policy accept; jump ber } chain ber { counter packets 71 bytes 6664 } } Signed-off-by: Fernando Fernandez Mancera Signed-off-by: Pablo Neira Ayuso --- tests/shell/testcases/nft-f/0018jump_variable_0 | 19 +++++++++++++++++++ tests/shell/testcases/nft-f/0019jump_variable_1 | 20 ++++++++++++++++++++ tests/shell/testcases/nft-f/0020jump_variable_1 | 20 ++++++++++++++++++++ .../testcases/nft-f/dumps/0018jump_variable_0.nft | 8 ++++++++ 4 files changed, 67 insertions(+) create mode 100755 tests/shell/testcases/nft-f/0018jump_variable_0 create mode 100755 tests/shell/testcases/nft-f/0019jump_variable_1 create mode 100755 tests/shell/testcases/nft-f/0020jump_variable_1 create mode 100644 tests/shell/testcases/nft-f/dumps/0018jump_variable_0.nft (limited to 'tests/shell/testcases/nft-f') diff --git a/tests/shell/testcases/nft-f/0018jump_variable_0 b/tests/shell/testcases/nft-f/0018jump_variable_0 new file mode 100755 index 00000000..003a1bdf --- /dev/null +++ b/tests/shell/testcases/nft-f/0018jump_variable_0 @@ -0,0 +1,19 @@ +#!/bin/bash + +# Tests use of variables in jump statements + +set -e + +RULESET=" +define dest = ber + +table ip foo { + chain bar { + jump \$dest + } + + chain ber { + } +}" + +$NFT -f - <<< "$RULESET" diff --git a/tests/shell/testcases/nft-f/0019jump_variable_1 b/tests/shell/testcases/nft-f/0019jump_variable_1 new file mode 100755 index 00000000..bda861c9 --- /dev/null +++ b/tests/shell/testcases/nft-f/0019jump_variable_1 @@ -0,0 +1,20 @@ +#!/bin/bash + +# Tests use of variables in jump statements + +set -e + +RULESET=" +define dest = { 1024 } + +table ip foo { + chain bar { + jump \$dest + } + + chain ber { + } +}" + +$NFT -f - <<< "$RULESET" && exit 1 +exit 0 diff --git a/tests/shell/testcases/nft-f/0020jump_variable_1 b/tests/shell/testcases/nft-f/0020jump_variable_1 new file mode 100755 index 00000000..f753058f --- /dev/null +++ b/tests/shell/testcases/nft-f/0020jump_variable_1 @@ -0,0 +1,20 @@ +#!/bin/bash + +# Tests use of variables in jump statements + +set -e + +RULESET=" +define dest = * + +table ip foo { + chain bar { + jump \$dest + } + + chain ber { + } +}" + +$NFT -f - <<< "$RULESET" && exit 1 +exit 0 diff --git a/tests/shell/testcases/nft-f/dumps/0018jump_variable_0.nft b/tests/shell/testcases/nft-f/dumps/0018jump_variable_0.nft new file mode 100644 index 00000000..0ddaf07f --- /dev/null +++ b/tests/shell/testcases/nft-f/dumps/0018jump_variable_0.nft @@ -0,0 +1,8 @@ +table ip foo { + chain bar { + jump ber + } + + chain ber { + } +} -- cgit v1.2.3