Statistics
| Branch: | Tag: | Revision:

root / vlans / prv-net-helper @ cf51ea5b

History | View | Annotate | Download (979 Bytes)

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