new file mode 100644
@@ -0,0 +1,16 @@
+table inet t {
+ map m1 {
+ typeof osf name : ct mark
+ elements = { "Linux" : 0x00000001 }
+ }
+
+ map m2 {
+ type string,128 : mark
+ elements = { "Linux" : 0x00000001 }
+ }
+
+ chain c {
+ ct mark set osf name map @m1
+ ct mark set osf name map @m2
+ }
+}
new file mode 100755
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# support for strings/typeof in named maps.
+# m1 and m2 are identical, they just use different
+# ways for declaration.
+
+EXPECTED="table inet t {
+ map m1 {
+ typeof osf name : ct mark
+ elements = { \"Linux\" : 0x1 }
+ }
+
+ map m2 {
+ type string, 128 : mark
+ elements = { \"Linux\" : 0x1 }
+ }
+
+ chain c {
+ ct mark set osf name map @m1
+ ct mark set osf name map @m2
+ }
+}"
+
+set -e
+$NFT -f - <<< $EXPECTED
+
new file mode 100644
@@ -0,0 +1,31 @@
+table inet t {
+ set s1 {
+ typeof osf name
+ elements = { "Linux" }
+ }
+
+ set s2 {
+ type string,128
+ elements = { "Linux" }
+ }
+
+ set s3 {
+ typeof vlan id
+ elements = { 2, 3, 103 }
+ }
+
+ set s4 {
+ type integer,16
+ elements = { 2, 3, 103, 2003 }
+ }
+
+ chain c1 {
+ osf name @s1 accept
+ osf name @s2 accept
+ }
+
+ chain c2 {
+ vlan id @s3 accept
+ vlan id @s4 accept
+ }
+}
new file mode 100755
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# support for strings/typeof in named sets.
+# s1 and s2 are identical, they just use different
+# ways for declaration.
+
+EXPECTED="table inet t {
+ set s1 {
+ typeof osf name
+ elements = { \"Linux\" }
+ }
+
+ set s2 {
+ type string, 128
+ elements = { \"Linux\" }
+ }
+
+ set s3 {
+ typeof vlan id
+ elements = { 2, 3, 103 }
+ }
+
+ set s4 {
+ type integer,16
+ elements = { 2, 3, 103, 2003 }
+ }
+ chain c1 {
+ osf name @s1 accept
+ osf name @s2 accept
+ }
+
+ chain c2 {
+ ether type vlan vlan id @s3 accept
+ ether type vlan vlan id @s4 accept
+ }
+}"
+
+set -e
+$NFT -f - <<< $EXPECTED
+
Signed-off-by: Florian Westphal <fw@strlen.de> --- .../testcases/maps/dumps/typeof_maps_0.nft | 16 ++++++++ tests/shell/testcases/maps/typeof_maps_0 | 26 ++++++++++++ .../testcases/sets/dumps/typeof_sets_0.nft | 31 ++++++++++++++ tests/shell/testcases/sets/typeof_sets_0 | 40 +++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 tests/shell/testcases/maps/dumps/typeof_maps_0.nft create mode 100755 tests/shell/testcases/maps/typeof_maps_0 create mode 100644 tests/shell/testcases/sets/dumps/typeof_sets_0.nft create mode 100755 tests/shell/testcases/sets/typeof_sets_0