aboutsummaryrefslogtreecommitdiffstats
path: root/tests/functest
blob: a321c59d997164452cbceaac05ac44a9cb98b874 (plain)
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
171
#! /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 ***"