]> git.ipfire.org Git - thirdparty/ipset.git/blob - tests/cidr.sh
xlate: Fix for fd leak in error path
[thirdparty/ipset.git] / tests / cidr.sh
1 #!/bin/bash
2
3 set -e
4
5 NETS="0.0.0.0/1
6 128.0.0.0/2
7 192.0.0.0/3
8 224.0.0.0/4
9 240.0.0.0/5
10 248.0.0.0/6
11 252.0.0.0/7
12 254.0.0.0/8
13 255.0.0.0/9
14 255.128.0.0/10
15 255.192.0.0/11
16 255.224.0.0/12
17 255.240.0.0/13
18 255.248.0.0/14
19 255.252.0.0/15
20 255.254.0.0/16
21 255.255.0.0/17
22 255.255.128.0/18
23 255.255.192.0/19
24 255.255.224.0/20
25 255.255.240.0/21
26 255.255.248.0/22
27 255.255.252.0/23
28 255.255.254.0/24
29 255.255.255.0/25
30 255.255.255.128/26
31 255.255.255.192/27
32 255.255.255.224/28
33 255.255.255.240/29
34 255.255.255.248/30
35 255.255.255.252/31
36 255.255.255.254/32"
37
38 ipset="../src/ipset"
39
40 case "$1" in
41 net)
42 $ipset n test hash:net
43
44 while IFS= read x; do
45 $ipset add test $x
46 done <<<"$NETS"
47
48 while IFS= read x; do
49 first=`netmask -r $x | cut -d - -f 1`
50 $ipset test test $first >/dev/null 2>&1
51 last=`netmask -r $x | cut -d - -f 2 | cut -d ' ' -f 1`
52 $ipset test test $last >/dev/null 2>&1
53 done <<<"$NETS"
54
55 while IFS= read x; do
56 $ipset del test $x
57 done <<<"$NETS"
58 ;;
59 net,port)
60 $ipset n test hash:net,port
61
62 n=1
63 while IFS= read x; do
64 $ipset add test $x,$n
65 n=$((n+1))
66 done <<<"$NETS"
67
68 n=1
69 while IFS= read x; do
70 first=`netmask -r $x | cut -d - -f 1`
71 $ipset test test $first,$n >/dev/null 2>&1
72 last=`netmask -r $x | cut -d - -f 2 | cut -d ' ' -f 1`
73 $ipset test test $last,$n >/dev/null 2>&1
74 n=$((n+1))
75 done <<<"$NETS"
76
77 n=1
78 while IFS= read x; do
79 $ipset del test $x,$n
80 n=$((n+1))
81 done <<<"$NETS"
82 ;;
83 net,iface)
84 $ipset n test hash:net,iface
85
86 $ipset add test 0.0.0.0/0,eth0
87 n=1
88 while IFS= read x; do
89 $ipset add test $x,eth$n
90 n=$((n+1))
91 done <<<"$NETS"
92
93 $ipset test test 0.0.0.0/0,eth0
94 n=1
95 while IFS= read x; do
96 $ipset test test $x,eth$n >/dev/null 2>&1
97 n=$((n+1))
98 done <<<"$NETS"
99
100 $ipset del test 0.0.0.0/0,eth0
101 n=1
102 while IFS= read x; do
103 $ipset del test $x,eth$n
104 n=$((n+1))
105 done <<<"$NETS"
106 ;;
107 *)
108 echo "Usage: $0 net|net,port|net,iface"
109 exit 1
110 ;;
111 esac
112 $ipset x test