summaryrefslogtreecommitdiffstats
path: root/tests/py/ip/ip.t.payload
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2023-09-28 23:27:55 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2023-11-03 12:24:21 +0100
commitdc36708b9b209823f3ee8912f1d72c272bbd36da (patch)
treeadfb72a46bd3c3ab2036a210007ea87b0e1cc0a6 /tests/py/ip/ip.t.payload
parentfba8fbeb18225f9d4952fa61fb5a263ae07a26ee (diff)
rule: never merge across non-expression statements
commit 99ab1b8feb16741a83fb8b887bacae8fa07d29a2 upstream. The existing logic can merge across non-expression statements, if there is only one payload expression. Example: ether saddr 00:11:22:33:44:55 counter ether type 8021q is turned into counter ether saddr 00:11:22:33:44:55 ether type 8021q which isn't the same thing. Fix this up and add test cases for adjacent vlan and ip header fields. 'Counter' serves as a non-merge fence. Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'tests/py/ip/ip.t.payload')
-rw-r--r--tests/py/ip/ip.t.payload15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/py/ip/ip.t.payload b/tests/py/ip/ip.t.payload
index b9fcb515..4d34f989 100644
--- a/tests/py/ip/ip.t.payload
+++ b/tests/py/ip/ip.t.payload
@@ -523,3 +523,18 @@ ip
[ payload load 4b @ network header + 12 => reg 1 ]
[ payload load 4b @ network header + 16 => reg 9 ]
[ lookup reg 1 set __map%d dreg 0 ]
+
+# ip saddr 1.2.3.4 ip daddr 3.4.5.6
+ip test-ip4 input
+ [ payload load 4b @ network header + 12 => reg 1 ]
+ [ cmp eq reg 1 0x04030201 ]
+ [ payload load 4b @ network header + 16 => reg 1 ]
+ [ cmp eq reg 1 0x06050403 ]
+
+# ip saddr 1.2.3.4 counter ip daddr 3.4.5.6
+ip test-ip4 input
+ [ payload load 4b @ network header + 12 => reg 1 ]
+ [ cmp eq reg 1 0x04030201 ]
+ [ counter pkts 0 bytes 0 ]
+ [ payload load 4b @ network header + 16 => reg 1 ]
+ [ cmp eq reg 1 0x06050403 ]