Dynamically create delete-link script
[vsys.git] / factory / setup-link
1 #!/bin/sh +x
2
3 IP=/sbin/ip
4
5 SLICE=$1
6 SLICEID=`id -u $SLICE`
7 read LABEL
8 read REMOTE
9 read KEY
10
11 LINK=${LABEL}k$KEY
12
13 modprobe ip_gre
14 modprobe etun
15
16 ### Setup EGRE tunnel
17 EGRE=egre$LINK
18 $IP tunnel add $EGRE  mode gre/eth remote $REMOTE key $KEY
19 $IP link set $EGRE up
20
21 ### Setup etun
22 ETUN0=v$LINK
23 ETUN1=etun$LINK
24 echo $ETUN0,$ETUN1 > /sys/module/etun/parameters/newif
25 ifconfig $ETUN0 up
26 ifconfig $ETUN1 up
27
28 ### Setup bridge
29 BRIDGE=br$LINK
30 brctl addbr $BRIDGE
31 brctl addif $BRIDGE $EGRE 
32 brctl addif $BRIDGE $ETUN1
33 ifconfig $BRIDGE up
34
35 ### Setup iptables so that packets are visible in the vserver
36 iptables -t mangle -A FORWARD -o $BRIDGE -j MARK --set-mark $SLICEID
37
38 ### Create "grab link" script
39 GRAB=/vsys/grab-$ETUN0
40 cat > $GRAB <<EOF
41 #!/bin/sh
42
43 read PID
44
45 chcontext --ctx 1 -- echo \$PID > /sys/class/net/$ETUN0/new_ns_pid 
46 EOF
47 chmod +x $GRAB
48 echo $SLICE > $GRAB.acl 
49
50 ### Create "delete link" script
51 DELETE=/vsys/delete-$ETUN0
52 cat > $DELETE <<EOF
53 #!/bin/sh
54
55 # Get rid of etun devices, only need name of one of them
56 echo $ETUN1 > /sys/module/etun/parameters/delif
57
58 # Get rid of bridge
59 ifconfig $BRIDGE down
60 brctl delbr $BRIDGE
61
62 # Get rid of EGRE tunnel
63 ip tunnel del $EGRE
64
65 # Clean up files
66 rm $GRAB
67 rm $DELETE
68
69 EOF
70 chmod +x $DELETE
71 echo $SLICE > $DELETE.acl 
72
73