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 |