84ba325632670a206805a2c7af23e534c97a89aa
[packages.git] / ipv6 / 6scripts / files / 6tunnel.init
1 #!/bin/sh /etc/rc.common
2 START=46
3 STOP=46
4
5 start_service() {
6         local section="$1"
7         
8         include /lib/network
9         scan_interfaces
10         config_load /var/state/network
11
12         config_get LAN lan ifname
13         config_get tnlifname "$section" tnlifname
14         config_get remoteip4 "$section" remoteip4
15         config_get localip4 "$section" localip4
16         config_get localip6 "$section" localip6
17         config_get prefix "$section" prefix
18
19         ip tunnel add $tnlifname mode sit remote $remoteip4 local $localip4 ttl 255
20         ifconfig $tnlifname up
21         ip addr add $localip6 dev $tnlifname
22         ip route add ::/0 dev $tnlifname
23         ip route add 2000::/3 dev $tnlifname
24         ip -6 addr add $prefix dev $LAN
25 }
26
27 stop_service() {
28         local section="$1"
29         
30         include /lib/network
31         scan_interfaces
32         config_load /var/state/network
33
34         config_get LAN lan ifname
35         config_get tnlifname "$section" tnlifname
36         config_get remoteip4 "$section" remoteip4
37         config_get localip4 "$section" localip4
38         config_get localip6 "$section" localip6
39         config_get prefix "$section" prefix
40
41         ip -6 addr del $prefix dev $LAN
42         ip -6 ro del 2000::/3 dev $tnlifname
43         ip -6 ro del ::/0 dev $tnlifname
44         ip addr del $localip6 dev $tnlifname
45         ifconfig $tnlifname down
46         ip tunnel del $tnlifname
47 }
48 start() {
49         if ! [ -x /usr/sbin/ip ]; then
50                 echo "ip is required to setup the tunnel";
51                 exit 1;
52         fi
53         config_load "6tunnel"
54         config_foreach start_service 6tunnel
55 }
56
57 stop () {
58         config_load "6tunnel"
59         config_foreach stop_service 6tunnel
60 }