summaryrefslogtreecommitdiffstats
path: root/tests/cidr.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cidr.sh')
-rwxr-xr-xtests/cidr.sh112
1 files changed, 112 insertions, 0 deletions
diff --git a/tests/cidr.sh b/tests/cidr.sh
new file mode 100755
index 0000000..b7d695a
--- /dev/null
+++ b/tests/cidr.sh
@@ -0,0 +1,112 @@
+#!/bin/bash
+
+set -e
+
+NETS="0.0.0.0/1
+128.0.0.0/2
+192.0.0.0/3
+224.0.0.0/4
+240.0.0.0/5
+248.0.0.0/6
+252.0.0.0/7
+254.0.0.0/8
+255.0.0.0/9
+255.128.0.0/10
+255.192.0.0/11
+255.224.0.0/12
+255.240.0.0/13
+255.248.0.0/14
+255.252.0.0/15
+255.254.0.0/16
+255.255.0.0/17
+255.255.128.0/18
+255.255.192.0/19
+255.255.224.0/20
+255.255.240.0/21
+255.255.248.0/22
+255.255.252.0/23
+255.255.254.0/24
+255.255.255.0/25
+255.255.255.128/26
+255.255.255.192/27
+255.255.255.224/28
+255.255.255.240/29
+255.255.255.248/30
+255.255.255.252/31
+255.255.255.254/32"
+
+ipset="../src/ipset"
+
+case "$1" in
+net)
+ $ipset n test hash:net
+
+ while IFS= read x; do
+ $ipset add test $x
+ done <<<"$NETS"
+
+ while IFS= read x; do
+ first=`netmask -r $x | cut -d - -f 1`
+ $ipset test test $first >/dev/null 2>&1
+ last=`netmask -r $x | cut -d - -f 2 | cut -d ' ' -f 1`
+ $ipset test test $last >/dev/null 2>&1
+ done <<<"$NETS"
+
+ while IFS= read x; do
+ $ipset del test $x
+ done <<<"$NETS"
+ ;;
+net,port)
+ $ipset n test hash:net,port
+
+ n=1
+ while IFS= read x; do
+ $ipset add test $x,$n
+ n=$((n+1))
+ done <<<"$NETS"
+
+ n=1
+ while IFS= read x; do
+ first=`netmask -r $x | cut -d - -f 1`
+ $ipset test test $first,$n >/dev/null 2>&1
+ last=`netmask -r $x | cut -d - -f 2 | cut -d ' ' -f 1`
+ $ipset test test $last,$n >/dev/null 2>&1
+ n=$((n+1))
+ done <<<"$NETS"
+
+ n=1
+ while IFS= read x; do
+ $ipset del test $x,$n
+ n=$((n+1))
+ done <<<"$NETS"
+ ;;
+net,iface)
+ $ipset n test hash:net,iface
+
+ $ipset add test 0.0.0.0/0,eth0
+ n=1
+ while IFS= read x; do
+ $ipset add test $x,eth$n
+ n=$((n+1))
+ done <<<"$NETS"
+
+ $ipset test test 0.0.0.0/0,eth0
+ n=1
+ while IFS= read x; do
+ $ipset test test $x,eth$n >/dev/null 2>&1
+ n=$((n+1))
+ done <<<"$NETS"
+
+ $ipset del test 0.0.0.0/0,eth0
+ n=1
+ while IFS= read x; do
+ $ipset del test $x,eth$n
+ n=$((n+1))
+ done <<<"$NETS"
+ ;;
+*)
+ echo "Usage: $0 net|net,port|net,iface"
+ exit 1
+ ;;
+esac
+$ipset x test