diff options
-rw-r--r-- | src/rule.c | 3 | ||||
-rwxr-xr-x | tests/shell/testcases/sets/collapse_elem_0 | 19 | ||||
-rw-r--r-- | tests/shell/testcases/sets/dumps/collapse_elem_0.nft | 12 |
3 files changed, 33 insertions, 1 deletions
@@ -1414,7 +1414,8 @@ bool nft_cmd_collapse(struct list_head *cmds) continue; } - if (strcmp(elems->handle.table.name, cmd->handle.table.name) || + if (elems->handle.family != cmd->handle.family || + strcmp(elems->handle.table.name, cmd->handle.table.name) || strcmp(elems->handle.set.name, cmd->handle.set.name)) { elems = cmd; continue; diff --git a/tests/shell/testcases/sets/collapse_elem_0 b/tests/shell/testcases/sets/collapse_elem_0 new file mode 100755 index 00000000..7699e9da --- /dev/null +++ b/tests/shell/testcases/sets/collapse_elem_0 @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +RULESET="table ip a { + set x { + type inet_service; + } +} +table ip6 a { + set x { + type inet_service; + } +} +add element ip a x { 1 } +add element ip a x { 2 } +add element ip6 a x { 2 }" + +$NFT -f - <<< $RULESET diff --git a/tests/shell/testcases/sets/dumps/collapse_elem_0.nft b/tests/shell/testcases/sets/dumps/collapse_elem_0.nft new file mode 100644 index 00000000..a3244fc6 --- /dev/null +++ b/tests/shell/testcases/sets/dumps/collapse_elem_0.nft @@ -0,0 +1,12 @@ +table ip a { + set x { + type inet_service + elements = { 1, 2 } + } +} +table ip6 a { + set x { + type inet_service + elements = { 2 } + } +} |