diff --git a/rc.d/net-auto-wired b/rc.d/net-auto-wired index 9493857..21f487d 100755 --- a/rc.d/net-auto-wired +++ b/rc.d/net-auto-wired @@ -2,6 +2,7 @@ . /etc/rc.conf . /etc/rc.d/functions +. /usr/lib/network/globals . /etc/conf.d/netcfg if [[ ! -x /usr/sbin/ifplugd ]]; then @@ -9,6 +10,12 @@ if [[ ! -x /usr/sbin/ifplugd ]]; then exit 1 fi +if [ -z "${WIRED_INTERFACE}" ]; then + echo "No interface name set. Add to /etc/conf.d/netcfg a line" + echo " WIRED_INTERFACE=\"your_interface\"" + exit 1 +fi + CFG=/etc/ifplugd/ifplugd.conf ACTION=/etc/ifplugd/netcfg.action PIDFILE=/var/run/ifplugd.$WIRED_INTERFACE.pid @@ -19,35 +26,40 @@ PIDFILE=/var/run/ifplugd.$WIRED_INTERFACE.pid case "$1" in start) + if ! ck_daemon net-auto-wired; then + exit_stderr "net-auto-wired has already been started: try \"/etc/rc.d/net-auto-wired restart\"" + fi stat_busy "Starting netcfg auto-wired mode for interface ${WIRED_INTERFACE}" A="`eval echo \$\{ARGS_${WIRED_INTERFACE}\}`" [ -z "$A" ] && A="$ARGS" [ -z "$PID" ] && /usr/sbin/ifplugd -i $WIRED_INTERFACE -r $ACTION $A # ifplugd may return non-zero, but still succeed if -w is passed, as default in upstream config. sleep 1 - if [[ ! -f $PIDFILE ]]; then - stat_fail - else + if [[ -f $PIDFILE ]]; then add_daemon net-auto-wired stat_done + else + stat_fail fi ;; stop) - stat_busy "Stopping netcfg auto-wired mode for interface ${WIRED_INTERFACE}" - [ -n "$PID" ] && /usr/sbin/ifplugd -k -i $WIRED_INTERFACE -r $ACTION - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon net-auto-wired - stat_done + if ! ck_daemon net-auto-wired; then + stat_busy "Stopping netcfg auto-wired mode for interface ${WIRED_INTERFACE}" + [ -n "$PID" ] && /usr/sbin/ifplugd -k -i $WIRED_INTERFACE -r $ACTION + if [ $? -eq 0 ]; then + rm_daemon net-auto-wired + stat_done + else + stat_fail + fi fi ;; restart) - $0 stop + "$0" stop sleep 1 - $0 start + "$0" start ;; *) - echo "usage: $0 {start|stop|restart}" + echo "Usage: $0 {start|stop|restart}" esac exit 0