94e3993c98d7c0fa229cfc44e74530058550cd05
[packages.git] / ipv6 / 6scripts / files / 6bridge.init
1 #!/bin/sh /etc/rc.common
2
3 START=46
4 STOP=46
5
6 start_service() {
7         local section="$1"
8
9         . /lib/functions/network.sh
10
11         network_get_physdev LAN lan || return 1
12         network_get_physdev WAN wan || return 1
13         config_get bridge "$section" bridge
14
15         brctl addbr $bridge
16         brctl addif $bridge $LAN
17         brctl addif $bridge $WAN
18         brctl setfd $bridge 0
19
20         ebtables -t broute -A BROUTING -i $WAN -p ! ipv6 -j DROP
21         ifconfig $bridge up
22 }
23
24 stop_service() {
25         local section="$1"
26
27         . /lib/functions/network.sh
28
29         network_get_physdev LAN lan || return 1
30         network_get_physdev WAN wan || return 1
31         config_get bridge "$section" bridge
32
33         ifconfig $bridge down
34         ebtables -t broute -F
35
36         brctl delif $bridge $WAN
37         brctl delif $bridge $LAN
38         brctl delbr $bridge
39 }
40
41 start() {
42         if ! [ -f /proc/net/if_inet6 ]; then
43                 echo "IPv6 not enabled, install kmod-ipv6";
44                 exit 1
45         fi
46         config_load "6bridge"
47         config_foreach start_service 6bridge
48 }
49
50 stop() {
51         config_load "6bridge"
52         config_foreach stop_service 6bridge
53 }