DEFAULT_NET_CONF=0
-net_init_failed()
-{
+function net_init_failed() {
echo
echo $(date "+%H:%M:%S") " pl_netinit: network initialization failed,"
echo $(date "+%H:%M:%S") " pl_netinit: shutting down machine in two hours"
}
# Function for checking the IP address to see if its sensible.
-check_ip()
-{
+function check_ip() {
case "$*" in
"" | *[!0-9.]* | *[!0-9]) return 1 ;;
esac
# return 1 if found and parsed. if this is the case, DEFAULT_NET_CONF will
# be set to 1. For any found configuration file, $USED_NET_CONF will
# contain the validated contents
-find_node_config()
-{
+function find_node_config() {
/bin/rm -f $TMP_OLD_FLOPPY_CONF_FILE 2>&1 > /dev/null
echo $(date "+%H:%M:%S") " pl_netinit: looking for node configuration file on floppy"
net_init_failed
fi
+# within a systemd-driven startup, we often see this stage
+# triggered before the network is actually up
+# although of course we have network-online.target
+# as a requirement; go figure what systemd actually does..
+
+# in any case, let us try to work around that by allowing some delay
+# here
+
+TIMEOUT=30
+while true; do
+ /sbin/ifconfig $ETH_DEVICE >& /dev/null && continue
+ TIMEOUT=$(($TIMEOUT-1))
+ [ $TIMEOUT -le 0 ] && net_init_failed
+ sleep 1
+ echo $(date "+%H:%M:%S") " pl_netinit: waiting for device $ETH_DEVICE, ${TIMEOUT}s remaining "
+done
+
# actually check to make sure ifconfig <device> succeeds
+
/sbin/ifconfig $ETH_DEVICE up 2>&1 > /dev/null
+
if [[ $? -ne 0 ]]; then
echo $(date "+%H:%M:%S") " pl_netinit: device $ETH_DEVICE does not exist, most likely"
echo $(date "+%H:%M:%S") " pl_netinit: this CD does not have hardware support for your"
echo $(date "+%H:%M:%S") " pl_netinit: network adapter. please send the following lines"
echo $(date "+%H:%M:%S") " pl_netinit: to your PlanetLab support for further assistance"
- echo
+ echo ========== lspci beg
/sbin/lspci -n | /bin/grep "Class 0200"
- echo
+ echo ========== lspci end
+ echo ========== ifconfig beg
+ /sbin/ifconfig
+ echo ========== ifconfig beg
net_init_failed
fi
/sbin/ifconfig $ETH_DEVICE > $IFCONFIG_OUTPUT
echo $(date "+%H:%M:%S") " pl_netinit: network online"
-