diff options
Diffstat (limited to 'tests/cidr.sh')
-rwxr-xr-x | tests/cidr.sh | 112 |
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 |