94e3993c98d7c0fa229cfc44e74530058550cd05
[openwrt/svn-archive/archive.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 }