Statistics
| Branch: | Tag: | Revision:

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