diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/hash:net,net.t | 169 | ||||
-rw-r--r-- | tests/hash:net,net.t.list0 | 10 | ||||
-rw-r--r-- | tests/hash:net,net.t.list1 | 6 | ||||
-rw-r--r-- | tests/hash:net,net.t.list2 | 22 | ||||
-rw-r--r-- | tests/hash:net6,net6.t | 151 | ||||
-rw-r--r-- | tests/hash:net6,net6.t.list0 | 10 | ||||
-rw-r--r-- | tests/hash:net6,net6.t.list1 | 6 | ||||
-rwxr-xr-x | tests/netnetgen.sh | 9 | ||||
-rw-r--r-- | tests/resizen.sh | 14 | ||||
-rw-r--r-- | tests/resizet.sh | 8 | ||||
-rwxr-xr-x | tests/runtest.sh | 2 | ||||
-rwxr-xr-x | tests/setlist_resize.sh | 2 |
12 files changed, 407 insertions, 2 deletions
diff --git a/tests/hash:net,net.t b/tests/hash:net,net.t new file mode 100644 index 0000000..b63ff32 --- /dev/null +++ b/tests/hash:net,net.t @@ -0,0 +1,169 @@ +# Create a set with timeout +0 ipset create test hash:net,net hashsize 128 timeout 5 +# Add zero valued element +1 ipset add test 0.0.0.0/0,0.0.0.0/0 +# Test zero valued element +1 ipset test test 0.0.0.0/0,0.0.0.0/0 +# Delete zero valued element +1 ipset del test 0.0.0.0/0,0.0.0.0/0 +# Try to add /0 +1 ipset add test 1.1.1.1/0,1.1.1.1/0 +# Try to add /32 +0 ipset add test 1.1.1.1/32,1.1.1.2/32 +# Add almost zero valued element +0 ipset add test 0.0.0.0/1,0.0.0.0/1 +# Test almost zero valued element +0 ipset test test 0.0.0.0/1,0.0.0.0/1 +# Delete almost zero valued element +0 ipset del test 0.0.0.0/1,0.0.0.0/1 +# Test deleted element +1 ipset test test 0.0.0.0/1,0.0.0.0/1 +# Delete element not added to the set +1 ipset del test 0.0.0.0/1,0.0.0.0/1 +# Add first random network +0 ipset add test 2.0.0.1/24,2.0.1.1/24 +# Add second random network +0 ipset add test 192.168.68.69/27,192.168.129.69/27 +# Test first random value +0 ipset test test 2.0.0.255,2.0.1.255 +# Test second random value +0 ipset test test 192.168.68.95,192.168.129.75 +# Test value not added to the set +1 ipset test test 2.0.1.0,2.0.0.1 +# Try to add IP address +0 ipset add test 2.0.0.1,2.0.0.2 +# List set +0 ipset list test | grep -v Revision: | sed 's/timeout ./timeout x/' > .foo0 && ./sort.sh .foo0 +# Check listing +0 diff -u -I 'Size in memory.*' .foo hash:net,net.t.list0 +# Sleep 5s so that element can time out +0 sleep 5 +# List set +0 ipset -L test 2>/dev/null | grep -v Revision: > .foo0 && ./sort.sh .foo0 +# Check listing +0 diff -u -I 'Size in memory.*' .foo hash:net,net.t.list1 +# Flush test set +0 ipset flush test +# Delete test set +0 ipset destroy test +# Create test set +0 ipset new test hash:net,net +# Add networks in range notation +0 ipset add test 10.2.0.0-10.2.1.12,10.3.0.0-10.3.1.12 +# List set +0 ipset -L test 2>/dev/null | grep -v Revision: > .foo0 && ./sort.sh .foo0 +# Check listing +0 diff -u -I 'Size in memory.*' .foo hash:net,net.t.list2 +# Delete test set +0 ipset destroy test +# Stress test with range notation +0 ./netnetgen.sh | ipset restore +# List set and check the number of elements +0 n=`ipset -L test|grep '^10.'|wc -l` && test $n -eq 87040 +# Destroy test set +0 ipset destroy test +# Create test set with timeout support +0 ipset create test hash:net,net timeout 30 +# Add a non-matching IP address entry +0 ipset -A test 1.1.1.1,1.1.1.2 nomatch +# Add an overlapping matching small net +0 ipset -A test 1.1.1.0/30,1.1.1.0/30 +# Add an overlapping non-matching larger net +0 ipset -A test 1.1.1.0/28,1.1.1.0/28 nomatch +# Add an even larger matching net +0 ipset -A test 1.1.1.0/26,1.1.1.0/26 +# Check non-matching IP +1 ipset -T test 1.1.1.1,1.1.1.2 +# Check matching IP from non-matchin small net +0 ipset -T test 1.1.1.3,1.1.1.2 +# Check non-matching IP from larger net +1 ipset -T test 1.1.1.4,1.1.1.4 +# Check matching IP from even larger net +0 ipset -T test 1.1.1.16,1.1.1.16 +# Update non-matching IP to matching one +0 ipset -! -A test 1.1.1.1,1.1.1.2 +# Delete overlapping small net +0 ipset -D test 1.1.1.0/30,1.1.1.0/30 +# Check matching IP +0 ipset -T test 1.1.1.1,1.1.1.2 +# Add overlapping small net +0 ipset -A test 1.1.1.0/30,1.1.1.0/30 +# Update matching IP as a non-matching one, with shorter timeout +0 ipset -! -A test 1.1.1.1,1.1.1.2 nomatch timeout 2 +# Check non-matching IP +1 ipset -T test 1.1.1.1,1.1.1.2 +# Sleep 3s so that element can time out +0 sleep 3 +# Check non-matching IP +0 ipset -T test 1.1.1.1,1.1.1.2 +# Check matching IP +0 ipset -T test 1.1.1.3,1.1.1.2 +# flush ipset +0 ipset -F test +# Add matching IP +0 ipset -A test 10.0.0.0/16,192.168.0.0/24 +# Add more-specific non-matching IP +0 ipset -A test 10.0.0.0/24,192.168.0.0/24 nomatch +# Add even more-specific matching IP +0 ipset -A test 10.0.0.0/30,192.168.0.0/23 +# Check non-matching IP +1 ipset -T test 10.0.0.10,192.168.0.1 +# Check non-matching IP with nomatch specified +0 ipset -T test 10.0.0.10,192.168.0.1 nomatch +# Check matching IP +0 ipset -T test 10.0.0.1,192.168.0.1 +# Delete test set +0 ipset destroy test +# Timeout: Check that resizing keeps timeout values +0 ./resizet.sh -4 netnet +# Nomatch: Check that resizing keeps the nomatch flag +0 ./resizen.sh -4 netnet +# Counters: create set +0 ipset n test hash:net,net counters +# Counters: add element with packet, byte counters +0 ipset a test 2.0.0.1/24,2.0.0.1/24 packets 5 bytes 3456 +# Counters: check element +0 ipset t test 2.0.0.1/24,2.0.0.1/24 +# Counters: check counters +0 ./check_counters test 2.0.0.0/24,2.0.0.0/24 5 3456 +# Counters: delete element +0 ipset d test 2.0.0.1/24,2.0.0.1/24 +# Counters: test deleted element +1 ipset t test 2.0.0.1/24,2.0.0.1/24 +# Counters: add element with packet, byte counters +0 ipset a test 2.0.0.20/25,2.0.0.20/25 packets 12 bytes 9876 +# Counters: check counters +0 ./check_counters test 2.0.0.0/25,2.0.0.0/25 12 9876 +# Counters: update counters +0 ipset -! a test 2.0.0.20/25,2.0.0.20/25 packets 13 bytes 12479 +# Counters: check counters +0 ./check_counters test 2.0.0.0/25,2.0.0.0/25 13 12479 +# Counters: destroy set +0 ipset x test +# Counters and timeout: create set +0 ipset n test hash:net,net counters timeout 600 +# Counters and timeout: add element with packet, byte counters +0 ipset a test 2.0.0.1/24,2.0.0.1/24 packets 5 bytes 3456 +# Counters and timeout: check element +0 ipset t test 2.0.0.1/24,2.0.0.1/24 +# Counters and timeout: check counters +0 ./check_extensions test 2.0.0.0/24,2.0.0.0/24 600 5 3456 +# Counters and timeout: delete element +0 ipset d test 2.0.0.1/24,2.0.0.1/24 +# Counters and timeout: test deleted element +1 ipset t test 2.0.0.1/24,2.0.0.1/24 +# Counters and timeout: add element with packet, byte counters +0 ipset a test 2.0.0.20/25,2.0.0.20/25 packets 12 bytes 9876 +# Counters and timeout: check counters +0 ./check_extensions test 2.0.0.0/25,2.0.0.0/25 600 12 9876 +# Counters and timeout: update counters +0 ipset -! a test 2.0.0.20/25,2.0.0.20/25 packets 13 bytes 12479 +# Counters and timeout: check counters +0 ./check_extensions test 2.0.0.0/25,2.0.0.0/25 600 13 12479 +# Counters and timeout: update timeout +0 ipset -! a test 2.0.0.20/25,2.0.0.20/25 timeout 700 +# Counters and timeout: check counters +0 ./check_extensions test 2.0.0.0/25,2.0.0.0/25 700 13 12479 +# Counters and timeout: destroy set +0 ipset x test +# eof diff --git a/tests/hash:net,net.t.list0 b/tests/hash:net,net.t.list0 new file mode 100644 index 0000000..b759316 --- /dev/null +++ b/tests/hash:net,net.t.list0 @@ -0,0 +1,10 @@ +Name: test +Type: hash:net,net +Header: family inet hashsize 128 maxelem 65536 timeout x +Size in memory: 3040 +References: 0 +Members: +1.1.1.1,1.1.1.2 timeout x +192.168.68.64/27,192.168.129.64/27 timeout x +2.0.0.0/24,2.0.1.0/24 timeout x +2.0.0.1,2.0.0.2 timeout x diff --git a/tests/hash:net,net.t.list1 b/tests/hash:net,net.t.list1 new file mode 100644 index 0000000..d27b4a4 --- /dev/null +++ b/tests/hash:net,net.t.list1 @@ -0,0 +1,6 @@ +Name: test +Type: hash:net,net +Header: family inet hashsize 128 maxelem 65536 timeout 5 +Size in memory: 3040 +References: 0 +Members: diff --git a/tests/hash:net,net.t.list2 b/tests/hash:net,net.t.list2 new file mode 100644 index 0000000..adf26ff --- /dev/null +++ b/tests/hash:net,net.t.list2 @@ -0,0 +1,22 @@ +Name: test +Type: hash:net,net +Header: family inet hashsize 1024 maxelem 65536 +Size in memory: 17664 +References: 0 +Members: +10.2.0.0/24,10.3.0.0/24 +10.2.0.0/24,10.3.1.0/29 +10.2.0.0/24,10.3.1.12 +10.2.0.0/24,10.3.1.8/30 +10.2.1.0/29,10.3.0.0/24 +10.2.1.0/29,10.3.1.0/29 +10.2.1.0/29,10.3.1.12 +10.2.1.0/29,10.3.1.8/30 +10.2.1.12,10.3.0.0/24 +10.2.1.12,10.3.1.0/29 +10.2.1.12,10.3.1.12 +10.2.1.12,10.3.1.8/30 +10.2.1.8/30,10.3.0.0/24 +10.2.1.8/30,10.3.1.0/29 +10.2.1.8/30,10.3.1.12 +10.2.1.8/30,10.3.1.8/30 diff --git a/tests/hash:net6,net6.t b/tests/hash:net6,net6.t new file mode 100644 index 0000000..3d6f447 --- /dev/null +++ b/tests/hash:net6,net6.t @@ -0,0 +1,151 @@ +# Create a set with timeout +0 ipset create test hash:net,net family inet6 hashsize 128 timeout 5 +# Add zero valued element +1 ipset add test ::/0,::/0 +# Test zero valued element +1 ipset test test ::/0,::/0 +# Delete zero valued element +1 ipset del test ::/0,::/0 +# Try to add /0 +1 ipset add test 1:1:1::1/0,1:1:1::1/0 +# Try to add /128 +0 ipset add test 1:1:1::1/128,2:2:2::2/128 +# Add almost zero valued element +0 ipset add test 0:0:0::0/1,0:0:0::0/1 +# Test almost zero valued element +0 ipset test test 0:0:0::0/1,0:0:0::0/1 +# Delete almost zero valued element +0 ipset del test 0:0:0::0/1,0:0:0::0/1 +# Test deleted element +1 ipset test test 0:0:0::0/1,0:0:0::0/1 +# Delete element not added to the set +1 ipset del test 0:0:0::0/1,0:0:0::0/1 +# Add first random network +0 ipset add test 2:0:0::1/24,4:0:0::1/32 +# Add second random network +0 ipset add test 192:168:68::69/27,172:16:68::69/48 +# Test first random value +0 ipset test test 2:0:0::255,4:0:0::54 +# Test second random value +0 ipset test test 192:168:68::95,172:16:68::68 +# Test value not added to the set +1 ipset test test 3:0:0::1,172:255:24::1 +# Try to add IP address +0 ipset add test 3:0:0::1,8:0:0::1 +# List set +0 ipset list test | grep -v Revision: | sed 's/timeout ./timeout x/' > .foo0 && ./sort.sh .foo0 +# Check listing +0 diff -u -I 'Size in memory.*' .foo hash:net6,net6.t.list0 +# Sleep 5s so that element can time out +0 sleep 5 +# IP: List set +0 ipset -L test 2>/dev/null | grep -v Revision: > .foo0 && ./sort.sh .foo0 +# IP: Check listing +0 diff -u -I 'Size in memory.*' .foo hash:net6,net6.t.list1 +# Flush test set +0 ipset flush test +# Add matching IP address entry +0 ipset -A test 2001:db8::1/64,2001:db8:fe9::1/126 +# Add more-specific non-matching IP address entry +0 ipset -A test 2001:db8::1/68,2001:db8:fe9::1/64 nomatch +# Add even-more-specific matching IP address entry +0 ipset -A test 2001:db8::1/72,2001:db8:fe9::1/64 +# Check non-matching IP +1 ipset -T test 2001:db8:0:0:0f00::,2001:db8:fe9::1 +# Check non-matching IP with nomatch +0 ipset -T test 2001:db8:0:0:0f00::,2001:db8:fe9::1 nomatch +# Check matching IP +0 ipset -T test 2001:db8::1,2001:db8:fe9::1 +# Delete test set +0 ipset destroy test +# Create test set with timeout support +0 ipset create test hash:net,net family inet6 timeout 30 +# Add a non-matching IP address entry +0 ipset -A test 1:1:1::1,2:2:2::2 nomatch +# Add an overlapping matching small net +0 ipset -A test 1:1:1::/124,2:2:2::/124 +# Add an overlapping non-matching larger net +0 ipset -A test 1:1:1::/120,2:2:2::/120 nomatch +# Add an even larger matching net +0 ipset -A test 1:1:1::/116,2:2:2::/116 +# Check non-matching IP +1 ipset -T test 1:1:1::1,2:2:2::2 +# Check matching IP from non-matchin small net +0 ipset -T test 1:1:1::f,2:2:2::f +# Check non-matching IP from larger net +1 ipset -T test 1:1:1::10,2:2:2::10 +# Check matching IP from even larger net +0 ipset -T test 1:1:1::100,2:2:2::100 +# Update non-matching IP to matching one +0 ipset -! -A test 1:1:1::1,2:2:2::2 +# Delete overlapping small net +0 ipset -D test 1:1:1::/124,2:2:2::/124 +# Check matching IP +0 ipset -T test 1:1:1::1,2:2:2::2 +# Add overlapping small net +0 ipset -A test 1:1:1::/124,2:2:2::/124 +# Update matching IP as a non-matching one, with shorter timeout +0 ipset -! -A test 1:1:1::1,2:2:2::2 nomatch timeout 2 +# Check non-matching IP +1 ipset -T test 1:1:1::1,2:2:2::2 +# Sleep 3s so that element can time out +0 sleep 3 +# Check non-matching IP +0 ipset -T test 1:1:1::1,2:2:2::2 +# Check matching IP +0 ipset -T test 1:1:1::f,2:2:2::f +# Delete test set +0 ipset destroy test +# Timeout: Check that resizing keeps timeout values +0 ./resizet.sh -6 netnet +# Nomatch: Check that resizing keeps the nomatch flag +0 ./resizen.sh -6 netnet +# Counters: create set +0 ipset n test hash:net,net -6 counters +# Counters: add element with packet, byte counters +0 ipset a test 2:0:0::1/64,3:0:0::1/64 packets 5 bytes 3456 +# Counters: check element +0 ipset t test 2:0:0::1/64,3:0:0::1/64 +# Counters: check counters +0 ./check_counters test 2:: 5 3456 +# Counters: delete element +0 ipset d test 2:0:0::1/64,3:0:0::1/64 +# Counters: test deleted element +1 ipset t test 2:0:0::1/64,3:0:0::1/64 +# Counters: add element with packet, byte counters +0 ipset a test 2:0:0::20/54,3:0:0::20/54 packets 12 bytes 9876 +# Counters: check counters +0 ./check_counters test 2:: 12 9876 +# Counters: update counters +0 ipset -! a test 2:0:0::20/54,3:0:0::20/54 packets 13 bytes 12479 +# Counters: check counters +0 ./check_counters test 2:: 13 12479 +# Counters: destroy set +0 ipset x test +# Counters and timeout: create set +0 ipset n test hash:net,net -6 counters timeout 600 +# Counters and timeout: add element with packet, byte counters +0 ipset a test 2:0:0::1/64,3:0:0::1/64 packets 5 bytes 3456 +# Counters and timeout: check element +0 ipset t test 2:0:0::1/64,3:0:0::1/64 +# Counters and timeout: check counters +0 ./check_extensions test 2:: 600 5 3456 +# Counters and timeout: delete element +0 ipset d test 2:0:0::1/64,3:0:0::1/64 +# Counters and timeout: test deleted element +1 ipset t test 2:0:0::1/64,3:0:0::1/64 +# Counters and timeout: add element with packet, byte counters +0 ipset a test 2:0:0::20/54,3:0:0::20/54 packets 12 bytes 9876 +# Counters and timeout: check counters +0 ./check_extensions test 2:: 600 12 9876 +# Counters and timeout: update counters +0 ipset -! a test 2:0:0::20/54,3:0:0::20/54 packets 13 bytes 12479 +# Counters and timeout: check counters +0 ./check_extensions test 2:: 600 13 12479 +# Counters and timeout: update timeout +0 ipset -! a test 2:0:0::20/54,3:0:0::20/54 timeout 700 +# Counters and timeout: check counters +0 ./check_extensions test 2:: 700 13 12479 +# Counters and timeout: destroy set +0 ipset x test +# eof diff --git a/tests/hash:net6,net6.t.list0 b/tests/hash:net6,net6.t.list0 new file mode 100644 index 0000000..ea78bbb --- /dev/null +++ b/tests/hash:net6,net6.t.list0 @@ -0,0 +1,10 @@ +Name: test +Type: hash:net,net +Header: family inet6 hashsize 128 maxelem 65536 timeout x +Size in memory: 4672 +References: 0 +Members: +192:160::/27,172:16:68::/48 timeout x +1:1:1::1,2:2:2::2 timeout x +2::/24,4::/32 timeout x +3::1,8::1 timeout x diff --git a/tests/hash:net6,net6.t.list1 b/tests/hash:net6,net6.t.list1 new file mode 100644 index 0000000..0e1b7d2 --- /dev/null +++ b/tests/hash:net6,net6.t.list1 @@ -0,0 +1,6 @@ +Name: test +Type: hash:net,net +Header: family inet6 hashsize 128 maxelem 65536 timeout 5 +Size in memory: 4672 +References: 0 +Members: diff --git a/tests/netnetgen.sh b/tests/netnetgen.sh new file mode 100755 index 0000000..e33710e --- /dev/null +++ b/tests/netnetgen.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +echo "n test hash:net,net hashsize 32 maxelem 87040" +for x in `seq 0 255`; do + for y in `seq 0 3 253`; do + z=$((y+2)) + echo "a test 10.0.0.0-10.0.2.255,10.$x.$y.0-10.$x.$z.255" + done +done diff --git a/tests/resizen.sh b/tests/resizen.sh index 1294efc..f473b0b 100644 --- a/tests/resizen.sh +++ b/tests/resizen.sh @@ -47,6 +47,20 @@ case "$2" in done done ;; + netnet) + $ipset n test hash:net,net $1 hashsize 64 + for x in `seq 0 16`; do + for y in `seq 0 255`; do + $ipset a test $ip$x$sep$y/$net,$ip$y$sep$x/$net nomatch + done + done + for x in `seq 0 16`; do + for y in `seq 0 255`; do + $ipset t test $ip$x$sep$y/$net,$ip$y$sep$x/$net nomatch \ + 2>/dev/null + done + done + ;; netport) $ipset n test hash:net,port $1 hashsize 64 for x in `seq 0 16`; do diff --git a/tests/resizet.sh b/tests/resizet.sh index 74fb19e..ff98d58 100644 --- a/tests/resizet.sh +++ b/tests/resizet.sh @@ -61,6 +61,14 @@ case "$2" in done done ;; + netnet) + $ipset n test hash:net,net $1 hashsize 64 timeout 100 + for x in `seq 0 16`; do + for y in `seq 0 255`; do + $ipset a test $ip$x$sep$y/$net,$ip$y$sep$x/$net + done + done + ;; netport) $ipset n test hash:net,port $1 hashsize 64 timeout 100 for x in `seq 0 16`; do diff --git a/tests/runtest.sh b/tests/runtest.sh index b14f151..962e1c6 100755 --- a/tests/runtest.sh +++ b/tests/runtest.sh @@ -9,7 +9,7 @@ tests="$tests iphash hash:ip hash:ip6" tests="$tests ipporthash hash:ip,port hash:ip6,port" tests="$tests ipportiphash hash:ip,port,ip hash:ip6,port,ip6" tests="$tests nethash hash:net hash:net6 hash:net,port hash:net6,port" -tests="$tests hash:ip,port,net hash:ip6,port,net6" +tests="$tests hash:ip,port,net hash:ip6,port,net6 hash:net,net hash:net6,net6" tests="$tests hash:net,iface.t" tests="$tests setlist restore" # tests="$tests iptree iptreemap" diff --git a/tests/setlist_resize.sh b/tests/setlist_resize.sh index 691f9eb..ee045f4 100755 --- a/tests/setlist_resize.sh +++ b/tests/setlist_resize.sh @@ -6,7 +6,7 @@ loop=8 for x in ip_set_list_set ip_set_hash_netiface ip_set_hash_ipportnet \ ip_set_hash_netport ip_set_hash_net ip_set_hash_ipportip \ - ip_set_hash_ipport ip_set_hash_ip \ + ip_set_hash_ipport ip_set_hash_ip ip_set_hash_netnet \ ip_set_bitmap_port ip_set_bitmap_ipmac \ ip_set_bitmap_ip xt_set ip_set; do rmmod $x |