aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/ipv6/odhcp6c/files
diff options
context:
space:
mode:
authorSteven Barth <cyrus@openwrt.org>2013-01-28 13:53:43 +0000
committerSteven Barth <cyrus@openwrt.org>2013-01-28 13:53:43 +0000
commite964fa5d8f49edc5e731a82b1600313369b0ecaf (patch)
tree85c5ebac1c971945b4f80651cbf2c3d2c25bb4d2 /package/network/ipv6/odhcp6c/files
parent5f735b291fadd239a04acabecebe3e5c77255ba4 (diff)
downloadupstream-e964fa5d8f49edc5e731a82b1600313369b0ecaf.tar.gz
upstream-e964fa5d8f49edc5e731a82b1600313369b0ecaf.tar.bz2
upstream-e964fa5d8f49edc5e731a82b1600313369b0ecaf.zip
odhcp6c: work-around for proto-script to avoid loosing the default route
SVN-Revision: 35345
Diffstat (limited to 'package/network/ipv6/odhcp6c/files')
-rwxr-xr-xpackage/network/ipv6/odhcp6c/files/dhcpv6.script29
1 files changed, 10 insertions, 19 deletions
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script
index 859ae1b745..f2161c2339 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