diff --git a/package/busybox/udhcpc.script b/package/busybox/udhcpc.script index c2804a3b5a..711963f974 100755 --- a/package/busybox/udhcpc.script +++ b/package/busybox/udhcpc.script @@ -11,6 +11,24 @@ RESOLV_CONF="/etc/resolv.conf" # Handle stateful DHCPv6 like DHCPv4 [ -n "$ipv6" ] && ip="$ipv6/128" +if [ -z "${IF_WAIT_DELAY}" ]; then + IF_WAIT_DELAY=10 +fi + +wait_for_ipv6_default_route() { + printf "Waiting for IPv6 default route to appear" + while [ $IF_WAIT_DELAY -gt 0 ]; do + if [ -z "$(ip -6 route list | grep default)" ]; then + printf "\n" + return + fi + sleep 1 + printf "." + : $((IF_WAIT_DELAY -= 1)) + done + printf " timeout!\n" +} + case "$1" in deconfig) /sbin/ifconfig $interface up @@ -39,6 +57,9 @@ case "$1" in /usr/sbin/avahi-autoipd -k $interface fi /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + if [ -n "$ipv6" ] ; then + wait_for_ipv6_default_route + fi if [ -n "$router" ] ; then echo "deleting routers"