diff --git a/etc/net/scripts/create-tuntap b/etc/net/scripts/create-tuntap index 97f461f..7619471 100755 --- a/etc/net/scripts/create-tuntap +++ b/etc/net/scripts/create-tuntap @@ -3,20 +3,27 @@ pickup_defaults pickup_options -if [ ! -c /dev/net/tun ]; then - $MODPROBE tun || { - print_error "tuntap kernel module not found" - exit 1 - } - [ -c /dev/net/tun ] || { - print_error "tuntap control node does not exist" - exit 1 - } -fi +ensure_tuntap_node() { + local i=3 + + [ -c /dev/net/tun ] && return 0 + $MODPROBE tun || return 1 + while [ $i -gt 0 ] ; do + [ -c /dev/net/tun ] && break + i=$(($i - 1)) + usleep 30000 + done + [ -c /dev/net/tun ] +} [ -x "${TUNCTL:=$DEFAULT_TUNCTL}" ] || { print_error "$TUNCTL does not exist or is not executable. Try installing tunctl RPM." exit 1 } +ensure_tuntap_node || { + print_error "tuntap control node does not exist" + exit 1 +} + $TUNCTL -t "$NAME" ${TUNTAP_USER:+-u $TUNTAP_USER} > /dev/null