]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: un-break rule insert with intervals
authorFlorian Westphal <fw@strlen.de>
Tue, 20 Sep 2022 13:26:07 +0000 (15:26 +0200)
committerFlorian Westphal <fw@strlen.de>
Tue, 20 Sep 2022 13:26:34 +0000 (15:26 +0200)
'rule inet dscpclassify dscp_match  meta l4proto { udp }  th dport { 3478 }  th sport { 3478-3497, 16384-16387 } goto ct_set_ef'
works with 'nft add', but not 'nft insert', the latter yields: "BUG: unhandled op 4".

Fixes: 81e36530fcac ("src: replace interval segment tree overlap and automerge")
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/evaluate.c
tests/shell/testcases/rule_management/0003insert_0
tests/shell/testcases/rule_management/dumps/0003insert_0.nft

index d9c9ca28a53a9c782886c3e107f838b941dbee1c..edebd7bcd8ab2e7f991df577e35e7c55aab5402b 100644 (file)
@@ -1520,6 +1520,7 @@ static int interval_set_eval(struct eval_ctx *ctx, struct set *set,
        switch (ctx->cmd->op) {
        case CMD_CREATE:
        case CMD_ADD:
+       case CMD_INSERT:
                if (set->automerge) {
                        ret = set_automerge(ctx->msgs, ctx->cmd, set, init,
                                            ctx->nft->debug_mask);
index 329ccc203ed73c4030ad32b209a5e525513aeaf7..c343d579f7cce2520cb06c5e39e78e93c22abe90 100755 (executable)
@@ -9,3 +9,7 @@ $NFT add chain t c
 $NFT insert rule t c accept
 $NFT insert rule t c drop
 $NFT insert rule t c masquerade
+
+# check 'evaluate: un-break rule insert with intervals'
+
+$NFT insert rule t c tcp sport { 3478-3497, 16384-16387 }
index 9421f4ae3c243d85682858ea40d2b9010631d5dc..b1875abaf98c522bbe34d840c50687085d8a090e 100644 (file)
@@ -1,5 +1,6 @@
 table ip t {
        chain c {
+               tcp sport { 3478-3497, 16384-16387 }
                masquerade
                drop
                accept