root / vlans / prv-net-helper @ cf51ea5b
History | View | Annotate | Download (979 Bytes)
1 |
#!/bin/bash |
---|---|
2 |
|
3 |
function usage { |
4 |
echo "Usage: $0 <mode> <parent interface> <prv min> <prv max> <offset>" |
5 |
exit 1 |
6 |
} |
7 |
|
8 |
if [ $# -ne 5 ]; then |
9 |
usage |
10 |
fi |
11 |
|
12 |
function up { |
13 |
iface=$1 |
14 |
prv_min=$2 |
15 |
prv_max=$3 |
16 |
offset=$4 |
17 |
|
18 |
echo "Adding VLANs $2 - $3" |
19 |
vconfig set_name_type DEV_PLUS_VID_NO_PAD |
20 |
for prv in $(seq $prv_min $prv_max); do |
21 |
vlan=$(($prv+$offset)) |
22 |
bridge=prv$prv |
23 |
|
24 |
vconfig add $iface $vlan |
25 |
ifconfig $iface.$vlan up |
26 |
brctl addbr $bridge |
27 |
brctl setfd $bridge 0 |
28 |
brctl addif $bridge $iface.$vlan # dev_plus_vid |
29 |
ifconfig $bridge up |
30 |
done |
31 |
} |
32 |
|
33 |
function down { |
34 |
iface=$1 |
35 |
prv_min=$2 |
36 |
prv_max=$3 |
37 |
offset=$4 |
38 |
|
39 |
echo "Removing VLANs $2 - $3" |
40 |
for prv in $(seq $prv_min $prv_max); do |
41 |
vlan=$(($prv+$offset)) |
42 |
bridge=prv$prv |
43 |
|
44 |
( |
45 |
ifconfig $bridge down |
46 |
brctl delif $bridge $iface.$vlan # dev_plus_vid |
47 |
vconfig rem $iface.$vlan |
48 |
brctl delbr $bridge |
49 |
) 2>/dev/null |
50 |
done |
51 |
} |
52 |
|
53 |
mode=$1; shift |
54 |
if [ "$mode" = "up" ]; then |
55 |
up $@ |
56 |
elif [ "$mode" = "down" ]; then |
57 |
down $@ |
58 |
else |
59 |
usage |
60 |
fi |