odhcp6c: work-around for proto-script to avoid loosing the default route
authorSteven Barth <cyrus@openwrt.org>
Mon, 28 Jan 2013 13:53:43 +0000 (13:53 +0000)
committerSteven Barth <cyrus@openwrt.org>
Mon, 28 Jan 2013 13:53:43 +0000 (13:53 +0000)
SVN-Revision: 35345

package/network/ipv6/odhcp6c/Makefile
package/network/ipv6/odhcp6c/files/dhcpv6.script

index dc729fc4b9863e706b6d0f8ce6f5fb66418f8a99..0d66272ef25ebc05a5765ca720a5d794819b24f6 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=odhcp6c
-PKG_VERSION:=2013-01-21
+PKG_VERSION:=2013-01-28
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
index 859ae1b7454521b7d14e73acc45619d4b1a73435..f2161c23394a1648e0b0d1c3e00508a36474d801 100755 (executable)
@@ -7,34 +7,29 @@ ipv6_conf() {
        echo "$3" > "/proc/sys/net/ipv6/conf/$1/$2"
 }
 
-# RFC 6204 requires us to block forwarding until address acquisition is complete
-ipv6_block_forwarding() {
-       ip6tables "-$2" forwarding_rule -o "$1" -j REJECT --reject-with no-route 2>/dev/null
-}
-
 prepare_interface() {
        local device="$1"
-
-       ipv6_block_forwarding "$device" A
-
        ipv6_conf "$device" accept_ra 2
        ipv6_conf "$device" forwarding 2
 
        # Send RS
-       [ -x /usr/sbin/6relayd ] && /usr/sbin/6relayd -s "$device"
+       if [ -x /usr/sbin/6relayd ]; then
+               sleep 1
+               /usr/sbin/6relayd -s "$device"
+               sleep 4
+               /usr/sbin/6relayd -s "$device"
+       fi
+
 }
 
 cleanup_interface() {
        local device="$1"
        ipv6_conf "$device" accept_ra 1
        ipv6_conf "$device" forwarding 1
-       ipv6_block_forwarding "$device" D
 }
 
 setup_interface () {
        local device="$1"
-       ipv6_block_forwarding "$device" D
-
        proto_init_update "*" 1
 
        for dns in $RDNSS; do
@@ -60,16 +55,12 @@ teardown_interface() {
 }
 
 case "$2" in
-       started)
-               prepare_interface "$1"
-       ;;
-       stopped)
-               cleanup_interface "$1"
-       ;;
        informed|bound|updated|rebound)
                setup_interface "$1"
+               prepare_interface "$1"
        ;;
-       unbound|timeout)
+       started|stopped|unbound)
+               cleanup_interface "$1"
                teardown_interface "$1"
        ;;
 esac