#!/bin/sh # $Id: ifplugd.init.in 43 2003-09-13 11:25:11Z lennart $ # This file is part of ifplugd. # # ifplugd is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your # option) any later version. # # ifplugd is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with ifplugd; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ### BEGIN INIT INFO # Provides: ifplugd # Required-Start: $network $remote_fs # Required-Stop: $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Brings up/down network automatically # Description: Brings networks interfaces up and down automatically when # the cable is removed / inserted ### END INIT INFO DAEMON_NAME=ifplugd CFG=/etc/default/$DAEMON_NAME DESC="Network Interface Plugging Daemon" IFPLUGD=/usr/sbin/$DAEMON_NAME test -x $IFPLUGD || exit 0 if [ `id -u` != "0" ] && [ "$1" = "start" -o "$1" = "stop" ] ; then echo "You must be root to start, stop or restart ifplugd." exit 1 fi [ -f $CFG ] && . $CFG VERB="$1" shift [ $# -ne 0 ] && INTERFACES="$@" all_interfaces () { for IFPATH in /sys/class/net/* ; do IFNAME="${IFPATH#/sys/class/net/}" [ -e "$IFPATH/device" ] || continue if [ -f "$IFPATH/type" ] ; then grep --quiet '^1$' "$IFPATH/type" || continue fi case "$IFNAME" in eth*|wlan*) echo $IFNAME ;; esac done } [ "x$INTERFACES" = "xauto" -o "x$INTERFACES" = "xall" ] && INTERFACES="$(all_interfaces)" . /lib/lsb/init-functions case "$VERB" in start) [ "$INTERFACES" ] || exit 0 log_action_begin_msg "$DESC" for IF in $INTERFACES ; do if [ ! -e /sys/class/net/$IF ] || \ $IFPLUGD -c -i $IF >/dev/null ; then log_action_cont_msg "skip $IF" continue fi log_action_cont_msg "start $IF" IF1=$(echo $IF | sed "s/-/_/") A=$(eval echo \$\{ARGS_${IF1}\}) [ -z "$A" ] && A="$ARGS" $IFPLUGD -i $IF $A done log_action_end_msg 0 ;; stop) [ "$INTERFACES" ] || exit 0 log_action_begin_msg "$DESC" for IF in $INTERFACES ; do if [ ! -e /sys/class/net/$IF ] || \ ! $IFPLUGD -c -i $IF >/dev/null ; then log_action_cont_msg "skip $IF" continue fi log_action_cont_msg "stop $IF" $IFPLUGD -k --wait-on-kill -i $IF done log_action_end_msg 0 ;; status) [ "$INTERFACES" -o "$HOTPLUG_INTERFACES" ] || exit 0 for IF in $INTERFACES $HOTPLUG_INTERFACES ; do if [ ! -e /sys/class/net/$IF ] ; then log_action_msg "$IF: device $IF is either not present or not functional" continue fi log_begin_msg "$IF: " $IFPLUGD -c -i $IF done ;; suspend) [ "$INTERFACES" -o "$HOTPLUG_INTERFACES" ] || exit 0 log_action_begin_msg "$DESC" for IF in $INTERFACES $HOTPLUG_INTERFACES ; do if [ ! -e /sys/class/net/$IF ] || \ ! $IFPLUGD -c -i $IF >/dev/null ; then log_action_cont_msg "skip $IF" continue fi log_action_cont_msg "suspend $IF" $IFPLUGD -S -i $IF done log_action_end_msg 0 ;; resume) [ "$INTERFACES" -o "$HOTPLUG_INTERFACES" ] || exit 0 log_action_begin_msg "$DESC" for IF in $INTERFACES $HOTPLUG_INTERFACES ; do if [ ! -e /sys/class/net/$IF ] || \ ! $IFPLUGD -c -i $IF >/dev/null ; then log_action_cont_msg "skip $IF" continue fi log_action_cont_msg "resume $IF" $IFPLUGD -R -i $IF done log_action_end_msg 0 ;; force-reload|restart) [ "$INTERFACES" ] || exit 0 $0 stop $INTERFACES sleep 3 $0 start $INTERFACES ;; *) echo "Usage: $0 {start|stop|restart|force-reload|status|suspend|resume}" exit 1 esac exit 0