=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/etc/netstart,v retrieving revision 1.225 retrieving revision 1.226 diff -c -r1.225 -r1.226 *** src/etc/netstart 2022/10/31 20:14:45 1.225 --- src/etc/netstart 2022/11/01 10:45:53 1.226 *************** *** 1,6 **** #!/bin/sh - # ! # $OpenBSD: netstart,v 1.225 2022/10/31 20:14:45 kn Exp $ # Turn off Strict Bourne shell mode. set +o sh --- 1,6 ---- #!/bin/sh - # ! # $OpenBSD: netstart,v 1.226 2022/11/01 10:45:53 kn Exp $ # Turn off Strict Bourne shell mode. set +o sh *************** *** 290,304 **** # wait for autoconf interfaces wait_autoconf_default() { if ifconfig | grep -q ': flags=.*<.*AUTOCONF.*>'; then ! count=0 ! while ((count++ < 20)); do route -n show | grep -q ^default && break sleep .5 done fi } # Make sure the invoking user has the right privileges. Check for presence of # id(1) to avoid problems with diskless setups. if [[ -x /usr/bin/id ]] && (($(id -u) != 0)); then --- 290,314 ---- # wait for autoconf interfaces wait_autoconf_default() { + local _count=0 + if ifconfig | grep -q ': flags=.*<.*AUTOCONF.*>'; then ! while ((_count++ < 20)); do route -n show | grep -q ^default && break sleep .5 done fi } + # Ensure IPv6 Duplicate Address Detection (DAD) is completed. + wait_dad() { + local _count=0 + + while ((_count++ < 10 && $(sysctl -n net.inet6.ip6.dad_pending) != 0)); do + sleep 1 + done + } + # Make sure the invoking user has the right privileges. Check for presence of # id(1) to avoid problems with diskless setups. if [[ -x /usr/bin/id ]] && (($(id -u) != 0)); then *************** *** 397,406 **** # Configure interfaces that rely on routing ifmstart "tun tap gif etherip gre egre nvgre eoip vxlan pflow wg" ! if $IP6KERNEL; then ! # Ensure IPv6 Duplicate Address Detection (DAD) is completed. ! count=0 ! while ((count++ < 10 && $(sysctl -n net.inet6.ip6.dad_pending) != 0)); do ! sleep 1 ! done fi --- 407,412 ---- # Configure interfaces that rely on routing ifmstart "tun tap gif etherip gre egre nvgre eoip vxlan pflow wg" ! if $IP6KERNEL && ! $PRINT_ONLY; then ! wait_dad fi