odhcp6c: work-around for proto-script to avoid loosing the default route

SVN-Revision: 35345
This commit is contained in:
Steven Barth 2013-01-28 13:53:43 +00:00
parent 5f735b291f
commit e964fa5d8f
2 changed files with 11 additions and 20 deletions

View 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

View File

@ -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