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-a3cf2f4a3e73master
parent
0e5bdadcb3
commit
e486e3e8b0
|
@ -8,7 +8,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=odhcp6c
|
PKG_NAME:=odhcp6c
|
||||||
PKG_VERSION:=2013-01-21
|
PKG_VERSION:=2013-01-28
|
||||||
PKG_RELEASE=$(PKG_SOURCE_VERSION)
|
PKG_RELEASE=$(PKG_SOURCE_VERSION)
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
|
|
|
@ -7,34 +7,29 @@ ipv6_conf() {
|
||||||
echo "$3" > "/proc/sys/net/ipv6/conf/$1/$2"
|
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() {
|
prepare_interface() {
|
||||||
local device="$1"
|
local device="$1"
|
||||||
|
|
||||||
ipv6_block_forwarding "$device" A
|
|
||||||
|
|
||||||
ipv6_conf "$device" accept_ra 2
|
ipv6_conf "$device" accept_ra 2
|
||||||
ipv6_conf "$device" forwarding 2
|
ipv6_conf "$device" forwarding 2
|
||||||
|
|
||||||
# Send RS
|
# 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() {
|
cleanup_interface() {
|
||||||
local device="$1"
|
local device="$1"
|
||||||
ipv6_conf "$device" accept_ra 1
|
ipv6_conf "$device" accept_ra 1
|
||||||
ipv6_conf "$device" forwarding 1
|
ipv6_conf "$device" forwarding 1
|
||||||
ipv6_block_forwarding "$device" D
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_interface () {
|
setup_interface () {
|
||||||
local device="$1"
|
local device="$1"
|
||||||
ipv6_block_forwarding "$device" D
|
|
||||||
|
|
||||||
proto_init_update "*" 1
|
proto_init_update "*" 1
|
||||||
|
|
||||||
for dns in $RDNSS; do
|
for dns in $RDNSS; do
|
||||||
|
@ -60,16 +55,12 @@ teardown_interface() {
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$2" in
|
case "$2" in
|
||||||
started)
|
|
||||||
prepare_interface "$1"
|
|
||||||
;;
|
|
||||||
stopped)
|
|
||||||
cleanup_interface "$1"
|
|
||||||
;;
|
|
||||||
informed|bound|updated|rebound)
|
informed|bound|updated|rebound)
|
||||||
setup_interface "$1"
|
setup_interface "$1"
|
||||||
|
prepare_interface "$1"
|
||||||
;;
|
;;
|
||||||
unbound|timeout)
|
started|stopped|unbound)
|
||||||
|
cleanup_interface "$1"
|
||||||
teardown_interface "$1"
|
teardown_interface "$1"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Reference in New Issue