49964858f4
On some machines, the network interface is slow to appear. For example, on the Raspberry Pi, the network interface eth0 is an ethernet-over-USB, and our standard boot process is too fast, so our network startup script is called before the USB bus is compeltely enumerated, thus it can't configure eth0. Closes #8116. [Peter: move to S40network, handle multiple interfaces] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
58 lines
974 B
Bash
Executable File
58 lines
974 B
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Start the network....
|
|
#
|
|
|
|
# Debian ifupdown needs the /run/network lock directory
|
|
mkdir -p /run/network
|
|
|
|
# In case we have a slow-to-appear interface (e.g. eth-over-USB),
|
|
# and we need to configure it, wait until it appears, but not too
|
|
# long either. WAIT_DELAY is in seconds.
|
|
WAIT_DELAY=15
|
|
|
|
wait_for_interfaces() {
|
|
IFACES=$(awk '/^auto/ { print $2 }' /etc/network/interfaces)
|
|
[ -n "$IFACES" ] || return
|
|
|
|
printf "Waiting for network interfaces to appear"
|
|
|
|
for i in $(seq $WAIT_DELAY); do
|
|
for IFACE in $IFACES; do
|
|
if [ ! -e "/sys/class/net/$IFACE" ]; then
|
|
printf "."
|
|
sleep 1
|
|
continue 2
|
|
fi
|
|
done
|
|
|
|
printf " ok\n"; return
|
|
done
|
|
|
|
printf " timeout\n"
|
|
exit 1
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
wait_for_interfaces
|
|
|
|
echo "Starting network..."
|
|
/sbin/ifup -a
|
|
;;
|
|
stop)
|
|
printf "Stopping network..."
|
|
/sbin/ifdown -a
|
|
;;
|
|
restart|reload)
|
|
"$0" stop
|
|
"$0" start
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart}"
|
|
exit 1
|
|
esac
|
|
|
|
exit $?
|
|
|