-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathfunctest
executable file
·171 lines (131 loc) · 2.99 KB
/
functest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#! /bin/bash
BR=${1:-"br549"}
ETH=${2:-"eth0"}
maxports=${3:-1000}
echo "Ethernet Bridge functional test"
echo -n "Testing kernel: " ; uname -a
echo -n "Utilities: " ; brctl -V
# fetch ip of working $ETH
IP=`/sbin/ifconfig $ETH | sed -n -e 's/^.*inet addr:\([0-9][0-9\.]*\).*$/\1/p'`
echo "Using IP address $IP"
# All commands in this part must succeed
set -e
echo "0. Creating $maxports dummy devices"
modprobe dummy numdummies=$maxports
echo "1. Creating bridge $BR"
brctl addbr $BR
brctl stp $BR on
echo "2. Add $ETH"
ifconfig $ETH 0.0.0.0
brctl addif $BR $ETH
echo "3. Bring up bridge"
ifconfig $BR $IP
echo "4 Bring up another bridge"
brctl addbr "brx%d"
ifconfig brx0 1.1.1.1
echo "5 Bring down bridge"
ifconfig brx0 down
brctl delbr brx0
echo -n "6. Add " $maxports " ports:"
for (( i=1; i < $maxports; i++))
do
brctl addif $BR dummy$i
if [[ $(( $i % 10 )) -eq 10 ]]
then echo -n '.'
fi
done
echo
echo -n "7. Delete those ports:"
for (( i=1; i < $maxports; i++))
do
brctl delif $BR dummy$i
if [[ $(( $i % 10 )) -eq 10 ]]
then echo -n '.'
fi
done
echo
echo "8. Notififer cases"
brctl addif $BR dummy0
echo "8a Device down"
ifconfig dummy0 down
echo "8b Change device address"
ifconfig dummy0 hw ether 00:0d:02:03:04:05
echo "8c. Device up"
ifconfig dummy0 up
echo "8d Unregister device (slow)"
rmmod dummy
echo "** Done"
modprobe dummy numdummies=2
set +e
echo "10 Error cases"
echo -n " duplicate bridge - "
brctl addbr $BR
echo -n " bridge to bridge - "
brctl addbr brTmp
brctl addif $BR brTmp
echo -n " already in other bridge - "
brctl addif brTmp $ETH
echo -n " already in this bridge - "
brctl addif $BR $ETH
echo -n " remove from wrong bridge - "
brctl delif brTmp $ETH
brctl delbr brTmp
echo -n " remove bridge $ETH - "
brctl delbr $ETH
echo -n " remove bridge bogus - "
brctl delbr bogus
echo -n " remove still active bridge - "
brctl delbr $BR
echo -n " zero hw address - "
ifconfig dummy0 hw ether 00:00:00:00:00:00
brctl addif $BR dummy0
echo -n " duplicate hw address - "
ifconfig dummy0 hw ether 00:0d:01:00:00:00
ifconfig dummy1 hw ether 00:0d:01:00:00:00
brctl addif $BR dummy0
brctl addif $BR dummy1
# leave dummy0 for next test.
echo "10 Tuning"
set -e
brctl stp $BR off
brctl stp $BR on
brctl setageing $BR 4000
brctl setbridgeprio $BR 1
brctl setfd $BR 120
brctl sethello $BR 20
brctl setmaxage $BR 1000
brctl setpathcost $BR dummy0 50
brctl setportprio $BR dummy0 2
echo "Status check"
brctl show
read -p "Ok?"
brctl showstp $BR
read -p "Ok?"
brctl showmacs $BR
read -p "Ok?"
echo "30 Shutdown"
ifconfig $BR down
brctl delbr $BR
ifconfig $ETH $IP
echo "31 Remove bridge module"
rmmod bridge
rmmod dummy
rmmod bridge
echo "32 Check for dead bridge cleanup"
brctl addbr $BR
rmmod bridge
modprobe bridge
sleep 1
echo "33 Remove module with race"
brctl addbr $BR
ifconfig $BR 9.9.9.9
rmmod --wait bridge &
sleep 2
brctl addbr brXX
if ifconfig brXX 1.1.1.1 ; then
echo "?? ifconfig succeeded"
ifconfig brXX down
fi
ifconfig $BR down
wait
echo "*** Done ***"