1e474d3d93
I've had a case of a machine where eth0 was appearing a bit later after the boot, and appearing _downed_. ifplugd then fails to detect "link up". Thus, depending on how service startup ("ip link set dev eth0 up") races with driver initialization, ethernet randomly fails to initialize on boot. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
51 lines
1.6 KiB
Bash
Executable File
51 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#exec >/dev/null
|
|
exec 2>&1
|
|
exec </dev/null
|
|
|
|
pwd="$PWD"
|
|
|
|
if="${PWD##*/ifplugd_}"
|
|
|
|
echo "* Upping iface $if"
|
|
ip link set dev "$if" up || { sleep 5; exit; }
|
|
|
|
echo "* Starting ifplugd on $if [$$]"
|
|
exec \
|
|
env - PATH="$PATH" \
|
|
softlimit \
|
|
setuidgid root \
|
|
ifplugd -aqlMns -t3 -u8 -d8 -i "$if" -r "$pwd/ifplugd_handler"
|
|
|
|
# We use -t3 to wake ifplugd up less often.
|
|
# If after three tests (3*3=9 > 8) link state seen to be different,
|
|
# the handler will be called.
|
|
# IOW: short link losses will be ignored, longer ones
|
|
# will trigger DHCP reconfiguration and such (see handler code).
|
|
|
|
# -l makes ifplugd run either "up" or "down" script on startup.
|
|
# For example, if wired eth cable is unplugged, this stops dhcp service
|
|
# from pointlessly trying to get a lease.
|
|
# -q means that stopping monitoring does not stop dhcp/zcip/etc:
|
|
# presumably, admin decided to control them manually.
|
|
# -M prevents frequent respawning if device does not exist (yet?)
|
|
|
|
#-a Don't up interface automatically
|
|
#-p Don't run "up" script on startup
|
|
#-q Don't run "down" script on exit
|
|
#-l Always run script on startup
|
|
#-n Do not daemonize
|
|
#-s Do not log to syslog
|
|
#-t SECS Poll time in seconds
|
|
#-u SECS Delay before running script after link up
|
|
#-d SECS Delay after link down
|
|
#-i IFACE Interface
|
|
#-M Monitor creation/destruction of interface (otherwise it must exist)
|
|
#-r PROG Script to run
|
|
#-x ARG Extra argument for script
|
|
#-I Don't exit on nonzero exit code from script
|
|
#-f/-F Treat link detection error as link down/link up (otherwise exit on error)
|
|
#-m MODE API mode (mii, priv, ethtool, wlan, auto)
|
|
#-k Kill running daemon
|