diff options
-rwxr-xr-x | sysconfig/network-scripts/ifup | 2 | ||||
-rwxr-xr-x | sysconfig/network-scripts/ifup-eth | 2 | ||||
-rw-r--r-- | sysconfig/network-scripts/network-functions | 17 |
3 files changed, 19 insertions, 2 deletions
diff --git a/sysconfig/network-scripts/ifup b/sysconfig/network-scripts/ifup index 278fde39..4cf292ec 100755 --- a/sysconfig/network-scripts/ifup +++ b/sysconfig/network-scripts/ifup @@ -99,7 +99,7 @@ if [ "${VLAN}" = "yes" ] && [ "$ISALIAS" = "no" ]; then fi fi - is_available ${PHYSDEV} || { + is_available_wait ${PHYSDEV} ${DEVTIMEOUT} || { if [ "$?" = "1" ] ; then net_log $"$alias device ${DEVICE} does not seem to be present, delaying initialization." exit 1 diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth index c94c535e..bc0eb962 100755 --- a/sysconfig/network-scripts/ifup-eth +++ b/sysconfig/network-scripts/ifup-eth @@ -73,7 +73,7 @@ if [ "${TYPE}" = "Tap" ]; then fi # now check the real state -is_available ${REALDEVICE} || { +is_available_wait ${REALDEVICE} ${DEVTIMEOUT} || { if [ -n "$alias" ]; then net_log $"$alias device ${DEVICE} does not seem to be present, delaying initialization." else diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions index d7299572..ff683b90 100644 --- a/sysconfig/network-scripts/network-functions +++ b/sysconfig/network-scripts/network-functions @@ -329,6 +329,23 @@ END { [ -d "/sys/class/net/$1" ] && return 0 || return 1 } +is_available_wait () +{ + [ -z "$1" ] && return 1 + + local retry=${2##*[!0-9]*} + + is_available $1 && return 0 + + while [ 0"$retry" -gt 0 ]; do + sleep 1 + [ -d "/sys/class/net/$1" ] && return 0 + retry=$(($retry -1)) + done + + return 1 +} + need_hostname () { CHECK_HOSTNAME=$(hostname) |