mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
selftests: netfilter: nft_concat_range.sh: add check for double-create bug
Add a test case for bug resolved with:
'netfilter: nft_set_pipapo_avx2: fix skip of expired entries'.
It passes on nf.git (it uses the generic/C version for insertion
duplicate check) but fails on unpatched nf-next if AVX2 is supported:
cannot create same element twice 0s [FAIL]
Could create element twice in same transaction
table inet filter { # handle 8
[..]
elements = { 1.2.3.4 . 1.2.4.1 counter packets 0 bytes 0,
1.2.4.1 . 1.2.3.4 counter packets 0 bytes 0,
1.2.3.4 . 1.2.4.1 counter packets 0 bytes 0,
1.2.4.1 . 1.2.3.4 counter packets 0 bytes 0 }
Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
This commit is contained in:
parent
5823699a11
commit
94bd247bc2
|
|
@ -29,7 +29,7 @@ TYPES="net_port port_net net6_port port_proto net6_port_mac net6_port_mac_proto
|
|||
net6_port_net6_port net_port_mac_proto_net"
|
||||
|
||||
# Reported bugs, also described by TYPE_ variables below
|
||||
BUGS="flush_remove_add reload net_port_proto_match avx2_mismatch"
|
||||
BUGS="flush_remove_add reload net_port_proto_match avx2_mismatch doublecreate"
|
||||
|
||||
# List of possible paths to pktgen script from kernel tree for performance tests
|
||||
PKTGEN_SCRIPT_PATHS="
|
||||
|
|
@ -408,6 +408,18 @@ perf_duration 0
|
|||
"
|
||||
|
||||
|
||||
TYPE_doublecreate="
|
||||
display cannot create same element twice
|
||||
type_spec ipv4_addr . ipv4_addr
|
||||
chain_spec ip saddr . ip daddr
|
||||
dst addr4
|
||||
proto icmp
|
||||
|
||||
race_repeat 0
|
||||
|
||||
perf_duration 0
|
||||
"
|
||||
|
||||
# Set template for all tests, types and rules are filled in depending on test
|
||||
set_template='
|
||||
flush ruleset
|
||||
|
|
@ -1900,6 +1912,48 @@ test_bug_avx2_mismatch()
|
|||
fi
|
||||
}
|
||||
|
||||
test_bug_doublecreate()
|
||||
{
|
||||
local elements="1.2.3.4 . 1.2.4.1, 1.2.4.1 . 1.2.3.4"
|
||||
local ret=1
|
||||
local i
|
||||
|
||||
setup veth send_"${proto}" set || return ${ksft_skip}
|
||||
|
||||
add "{ $elements }" || return 1
|
||||
# expected to work: 'add' on existing should be no-op.
|
||||
add "{ $elements }" || return 1
|
||||
|
||||
# 'create' should return an error.
|
||||
if nft create element inet filter test "{ $elements }" 2>/dev/null; then
|
||||
err "Could create an existing element"
|
||||
return 1
|
||||
fi
|
||||
nft -f - <<EOF 2>/dev/null
|
||||
flush set inet filter test
|
||||
create element inet filter test { $elements }
|
||||
create element inet filter test { $elements }
|
||||
EOF
|
||||
ret=$?
|
||||
if [ $ret -eq 0 ]; then
|
||||
err "Could create element twice in one transaction"
|
||||
err "$(nft -a list ruleset)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
nft -f - <<EOF 2>/dev/null
|
||||
flush set inet filter test
|
||||
create element inet filter test { $elements }
|
||||
EOF
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
err "Could not flush and re-create element in one transaction"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
test_reported_issues() {
|
||||
eval test_bug_"${subtest}"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user