From 7b491e0c068c9881accfb571db3fb8f2f5799ca2 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Mon, 18 Sep 2023 15:08:28 +0200 Subject: evaluate: perform mark datatype compatibility check from maps Wrap datatype compatibility check into a helper function and use it for map evaluation, otherwise the following bogus error message is displayed: Error: datatype mismatch, map expects packet mark, mapping expression has type integer Add unit tests to improve coverage for this usecase. Fixes: 5d8e33ddb112 ("evaluate: relax type-checking for integer arguments in mark statements") Signed-off-by: Pablo Neira Ayuso --- tests/shell/testcases/maps/vmap_mark_bitwise_0 | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 tests/shell/testcases/maps/vmap_mark_bitwise_0 (limited to 'tests/shell/testcases/maps/vmap_mark_bitwise_0') diff --git a/tests/shell/testcases/maps/vmap_mark_bitwise_0 b/tests/shell/testcases/maps/vmap_mark_bitwise_0 new file mode 100755 index 00000000..0d933553 --- /dev/null +++ b/tests/shell/testcases/maps/vmap_mark_bitwise_0 @@ -0,0 +1,38 @@ +#!/bin/bash + +set -e + +RULESET="table ip x { + chain sctm_o0_0 { + } + + chain sctm_o0_1 { + } + + map sctm_o0 { + type mark : verdict + elements = { + 0x0 : jump sctm_o0_0, + 0x1 : jump sctm_o0_1, + } + } + + counter c_o0_0 {} + + map sctm_o1 { + type mark : counter + elements = { + 0x0 : \"c_o0_0\", + } + } + + chain SET_ctmark_RPLYroute { + meta mark >> 8 & 0xf vmap @sctm_o0 + } + + chain SET_ctmark_RPLYroute { + counter name meta mark >> 8 & 0xf map @sctm_o1 + } +}" + +$NFT -f - <<< $RULESET -- cgit v1.2.3