]> Cypherpunks.ru repositories - govpn.git/blob - utils/addroute.sh
743bbd597d0d8ffc681761d2f6faa818c8133c0b
[govpn.git] / utils / addroute.sh
1 #!/bin/bash -x
2
3 # A simple script handling default routing for GoVPN,
4 # inspired by vpnc-script, but much simpler.
5
6 # List of parameters passed through environment
7 # - reason               -- why this script is called:
8 #                           pre-init, connect, disconnect
9 # - VPNGATEWAY           -- public address of vpn gateway
10 # - TAPDEV               -- tap device
11 # - INTERNAL_IP4_ADDRESS -- e.g. 172.0.0.2/24
12 # - INTERNAL_IP4_GATEWAY -- e.g. 172.0.0.1
13
14
15 set_up_dev() {
16   ip tuntap add dev $TAPDEV mode tap
17 }
18
19
20 tear_down_dev() {
21   ip tuntap del dev $TAPDEV mode tap
22 }
23
24
25 do_connect() {
26   OLDGW=$(ip route show 0/0 | sed -e 's/^default//')
27   ip link set dev $TAPDEV up
28   ip addr add $INTERNAL_IP4_ADDRESS dev $TAPDEV
29   ip route add $VPNGATEWAY $OLDGW
30   ip route add 0/1 via $INTERNAL_IP4_GATEWAY dev $TAPDEV
31   ip route add 128/1 via $INTERNAL_IP4_GATEWAY dev $TAPDEV
32 }
33
34
35 do_disconnect() {
36   ip route del $VPNGATEWAY
37 }
38
39
40 case $reason in
41   pre-init)
42     set_up_dev
43     ;;
44   connect)
45     do_connect
46     ;;
47   disconnect)
48     do_disconnect
49     ;;
50 esac