Exercise size in set with intervals (rbtree), including corner cases such as 0.0.0.0 and 255.255.255.255 (half-open interval). Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> --- tests/shell/testcases/sets/interval_size | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 tests/shell/testcases/sets/interval_size diff --git a/tests/shell/testcases/sets/interval_size b/tests/shell/testcases/sets/interval_size new file mode 100755 index 000000000000..0f236bf8f4ac --- /dev/null +++ b/tests/shell/testcases/sets/interval_size @@ -0,0 +1,41 @@ +#!/bin/bash + +RULESET="table inet x { + set x { + typeof ip saddr + flags interval + auto-merge + size 1 + } + + set y { + typeof ip saddr + flags interval + size 1 + } +}" + +$NFT -f - <<< $RULESET + +$NFT add element inet x x '{ 0.0.0.0, 255.255.255.255 }' && exit 1 +$NFT add element inet x x '{ 0.0.0.0 }' || exit 1 +$NFT add element inet x x '{ 255.255.255.0/24 }' && exit 1 +$NFT delete element inet x x '{ 0.0.0.0 }' || exit 1 +$NFT add element inet x x '{ 255.255.255.0/24 }' || exit 1 +$NFT add element inet x x '{ 0.0.0.0 }' && exit 1 +$NFT add element inet x x '{ 0.0.0.0-255.255.255.0 }' || exit 1 +$NFT delete element inet x x '{ 1.1.1.1 }' && exit 1 +$NFT delete element inet x x '{ 0.0.0.0/0 }' || exit 1 +$NFT add element inet x x '{ 255.255.255.0/24 }' || exit 1 +$NFT add element inet x x '{ 0.0.0.0 }' && exit 1 + +$NFT add element inet x y '{ 0.0.0.0, 255.255.255.255 }' && exit 1 +$NFT add element inet x y '{ 0.0.0.0 }' || exit 1 +$NFT add element inet x y '{ 255.255.255.0/24 }' && exit 1 +$NFT delete element inet x y '{ 0.0.0.0 }' || exit 1 +$NFT add element inet x y '{ 255.255.255.0/24 }' || exit 1 +$NFT add element inet x y '{ 0.0.0.0 }' && exit 1 +$NFT add element inet x y '{ 0.0.0.0-255.255.255.0 }' && exit 1 +$NFT delete element inet x y '{ 255.255.255.0/24 }' || exit 1 +$NFT add element inet x y '{ 0.0.0.0 }' || exit 1 +$NFT add element inet x y '{ 255.255.255.255 }' && exit 1 -- 2.30.2