summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-01-28 13:53:43 +0000
committercyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-01-28 13:53:43 +0000
commit230548a08e9633880866e23e9a9b5cb6333c5dcf (patch)
tree3de354d60b1e3463e6e6a299155c493a5ff9d78c
parenta19e709ca77b68292ce8da958e64df9eab656caa (diff)
odhcp6c: work-around for proto-script to avoid loosing the default route
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35345 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/network/ipv6/odhcp6c/Makefile2
-rwxr-xr-xpackage/network/ipv6/odhcp6c/files/dhcpv6.script29
2 files changed, 11 insertions, 20 deletions
diff --git a/package/network/ipv6/odhcp6c/Makefile b/package/network/ipv6/odhcp6c/Makefile
index dc729fc4b..0d66272ef 100644
--- a/package/network/ipv6/odhcp6c/Makefile
+++ b/package/network/ipv6/odhcp6c/Makefile
@@ -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
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script
index 859ae1b74..f2161c233 100755
--- a/package/network/ipv6/odhcp6c/files/dhcpv6.script
+++ b/package/network/ipv6/odhcp6c/files/dhcpv6.script
@@ -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