path: root/system
diff options
authorGravatar Jérôme Pouiller <jezz@sysmic.org>2015-10-29 10:00:18 +0100
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-11-02 16:51:47 +0100
commitccc52c8183730a6b7f498d371520e881dfb41668 (patch)
tree9d0466c62f26bdc7b6432fa224082ab67e075743 /system
parent81ece45c3aae23f899b92eabfe45e0bdb73ed789 (diff)
skeleton: optionally wait for network interfaces to appear
This patch has same purpose than 49964858f45d2243c513e6d362e992ad89ec7a45: 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. However, wait-delay hook is enabled only if wait-delay property appears in /etc/network/interfaces. This patch enable it automaticaly when interface is configured through DHCP at bootup. But, if user choose to write /etc/network/interface himself, he have to explicitly set wait-delay. Signed-off-by: Jérôme Pouiller <jezz@sysmic.org> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'system')
1 files changed, 21 insertions, 0 deletions
diff --git a/system/skeleton/etc/network/if-pre-up.d/wait_iface b/system/skeleton/etc/network/if-pre-up.d/wait_iface
new file mode 100755
index 0000000000..ebccff2aa5
--- /dev/null
+++ b/system/skeleton/etc/network/if-pre-up.d/wait_iface
@@ -0,0 +1,21 @@
+# 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. IF_WAIT_DELAY is in seconds.
+if [ "${IF_WAIT_DELAY}" -a ! -e "/sys/class/net/${IFACE}" ]; then
+ printf "Waiting for interface %s to appear" "${IFACE}"
+ while [ ${IF_WAIT_DELAY} -gt 0 ]; do
+ if [ -e "/sys/class/net/${IFACE}" ]; then
+ printf "\n"
+ exit 0
+ fi
+ sleep 1
+ printf "."
+ : $((IF_WAIT_DELAY -= 1))
+ done
+ printf " timeout!\n"
+ exit 1