diff options
author | Florian Westphal <fw@strlen.de> | 2023-12-14 17:47:21 +0100 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2023-12-14 17:51:24 +0100 |
commit | 21657008dd4b4094eac017a175f2a3056af36b17 (patch) | |
tree | e97435da4497c829a8fc2dc63f8a1356567b33b7 | |
parent | 060ed8655d64874a92e6fba2ba9452b2aa94849e (diff) |
Revert "evaluate: error out when existing set has incompatible key"
This breaks existing behaviour, add a test case so this is caught in
the future.
The reverted test case will be brought back once a better fix
is available.
Signed-off-by: Florian Westphal <fw@strlen.de>
-rw-r--r-- | src/evaluate.c | 3 | ||||
-rw-r--r-- | tests/shell/testcases/bogons/nft-f/range_expr_value_high_assert | 12 | ||||
-rwxr-xr-x | tests/shell/testcases/transactions/doubled-set | 22 | ||||
-rw-r--r-- | tests/shell/testcases/transactions/dumps/doubled-set.json-nft | 1 | ||||
-rw-r--r-- | tests/shell/testcases/transactions/dumps/doubled-set.nft | 7 |
5 files changed, 30 insertions, 15 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 0e0e0c00..70d80eb4 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -4768,9 +4768,6 @@ static int set_evaluate(struct eval_ctx *ctx, struct set *set) existing_set = set_cache_find(table, set->handle.set.name); if (!existing_set) set_cache_add(set_get(set), table); - else if (!datatype_equal(existing_set->key->dtype, set->key->dtype)) - return set_error(ctx, set, "%s definition has conflicting key (%s vs %s)\n", - type, set->key->dtype->name, existing_set->key->dtype->name); if (existing_set && existing_set->flags & NFT_SET_EVAL) { uint32_t existing_flags = existing_set->flags & ~NFT_SET_EVAL; diff --git a/tests/shell/testcases/bogons/nft-f/range_expr_value_high_assert b/tests/shell/testcases/bogons/nft-f/range_expr_value_high_assert deleted file mode 100644 index a25ac028..00000000 --- a/tests/shell/testcases/bogons/nft-f/range_expr_value_high_assert +++ /dev/null @@ -1,12 +0,0 @@ -table inet t { - set s3 { - type inet_proto - flags interval - elements = { 100-11.0.0.0, } - } - set s3 { - type ipv4_addr - flags interval - elements = { 100-11.0.0.0, } - } -} diff --git a/tests/shell/testcases/transactions/doubled-set b/tests/shell/testcases/transactions/doubled-set new file mode 100755 index 00000000..50b568eb --- /dev/null +++ b/tests/shell/testcases/transactions/doubled-set @@ -0,0 +1,22 @@ +#!/bin/bash + +# NFT_TEST_REQUIRES(NFT_TEST_HAVE_pipapo) + +$NFT -f /dev/stdin <<EOF +table t { + set s { + type ipv4_addr . ifname + flags interval + elements = { 1.2.3.4 . "foo" } + } + + set s { + type ipv4_addr . ifname + flags interval + elements = { 1.2.3.4 . "foo" } + + } +} +EOF + +# run-tests.sh will validate dumpfile. diff --git a/tests/shell/testcases/transactions/dumps/doubled-set.json-nft b/tests/shell/testcases/transactions/dumps/doubled-set.json-nft new file mode 100644 index 00000000..00a1af0d --- /dev/null +++ b/tests/shell/testcases/transactions/dumps/doubled-set.json-nft @@ -0,0 +1 @@ +{"nftables": [{"metainfo": {"version": "VERSION", "release_name": "RELEASE_NAME", "json_schema_version": 1}}, {"table": {"family": "ip", "name": "t", "handle": 0}}, {"set": {"family": "ip", "name": "s", "table": "t", "type": ["ipv4_addr", "ifname"], "handle": 0, "flags": ["interval"], "elem": [{"concat": ["1.2.3.4", "foo"]}]}}]} diff --git a/tests/shell/testcases/transactions/dumps/doubled-set.nft b/tests/shell/testcases/transactions/dumps/doubled-set.nft new file mode 100644 index 00000000..48a322eb --- /dev/null +++ b/tests/shell/testcases/transactions/dumps/doubled-set.nft @@ -0,0 +1,7 @@ +table ip t { + set s { + type ipv4_addr . ifname + flags interval + elements = { 1.2.3.4 . "foo" } + } +} |