diff options
author | Y Giridhar Appaji Nag <giridhar@appaji.net> | 2008-09-30 14:03:36 +0530 |
---|---|---|
committer | Andrew Shadura <andrew.shadura@collabora.co.uk> | 2016-06-21 11:57:31 +0200 |
commit | 4507939cf74c73cfcd8483cddd1251bf843ab75b (patch) | |
tree | 8a7db7c33b4552eea0de7acdf2f694fa59fcd66b /debian | |
parent | 7b9f005dae9268d9a79904fb4de3221d23ee5156 (diff) |
Imported Debian patch 0.28-14
Diffstat (limited to 'debian')
-rw-r--r-- | debian/bug/script | 4 | ||||
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | debian/ifplugd.init | 88 | ||||
-rw-r--r-- | debian/postinst | 75 | ||||
-rw-r--r-- | debian/postrm | 2 | ||||
-rw-r--r-- | debian/prerm | 18 | ||||
-rwxr-xr-x | debian/rules | 2 |
8 files changed, 175 insertions, 26 deletions
diff --git a/debian/bug/script b/debian/bug/script index ef5b949..e9c9509 100644 --- a/debian/bug/script +++ b/debian/bug/script @@ -2,5 +2,5 @@ exec >&3 -echo " /proc/net/dev interfaces:" -grep ":" /proc/net/dev | cut -f1 -d":" +echo " /sys/class/net/ interfaces:" +ls -ad /sys/class/net/*/ diff --git a/debian/changelog b/debian/changelog index 11148ac..04c0b8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +ifplugd (0.28-14) unstable; urgency=low + + * Thanks to Kel Modderman <kel@otaku42.de> for all the patches. + * Use lsb-base logging functions for initscript output (Closes: #500571) + * Various enhancements to the initscript (sysfs rather than procfs etc.) + * Handle [HOTPLUG_]INTERFACES during config/upgrade/remove (Closes: #500570) + and (Closes: #437535) + + -- Y Giridhar Appaji Nag <giridhar@appaji.net> Tue, 30 Sep 2008 14:03:36 +0530 + ifplugd (0.28-13) unstable; urgency=low * The "Thanks Kel Modderman <kel@otaku42.de> for patches" release diff --git a/debian/control b/debian/control index 6019237..f7b38a4 100644 --- a/debian/control +++ b/debian/control @@ -11,7 +11,7 @@ DM-Upload-Allowed: yes Package: ifplugd Architecture: any -Depends: ${shlibs:Depends}, debconf (>= 1.2.0) | debconf-2.0 +Depends: ${shlibs:Depends}, debconf (>= 1.2.0) | debconf-2.0, lsb-base (>= 3.0-6) Recommends: ifupdown (>= 0.6.4-4.2) Suggests: wpasupplicant, waproamd Description: configuration daemon for ethernet devices diff --git a/debian/ifplugd.init b/debian/ifplugd.init index 19dd442..ba9c955 100644 --- a/debian/ifplugd.init +++ b/debian/ifplugd.init @@ -29,7 +29,7 @@ ### END INIT INFO CFG=/etc/default/ifplugd - +DESC="Network Interface Plugging Daemon" IFPLUGD=/usr/sbin/ifplugd test -x $IFPLUGD || exit 0 @@ -45,55 +45,101 @@ shift [ $# -ne 0 ] && INTERFACES="$@" -[ "x$INTERFACES" = "xauto" -o "x$INTERFACES" = "xall" ] && INTERFACES="`cat /proc/net/dev | awk '{ print $1 }' | egrep '^(eth|wlan)' | cut -d: -f1`" +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 +} -[ "$INTERFACES" ] || exit 0 +[ "x$INTERFACES" = "xauto" -o "x$INTERFACES" = "xall" ] && INTERFACES="$(all_interfaces)" + +. /lib/lsb/init-functions case "$VERB" in start) - echo -n "Starting Network Interface Plugging Daemon:" + [ "$INTERFACES" ] || exit 0 + log_action_begin_msg "$DESC" for IF in $INTERFACES ; do - grep --quiet $IF /proc/net/dev || continue + 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 - echo -n " $IF" done - echo "." + log_action_end_msg 0 ;; stop) - echo -n "Stopping Network Interface Plugging Daemon:" + [ "$INTERFACES" ] || exit 0 + log_action_begin_msg "$DESC" for IF in $INTERFACES ; do - grep --quiet $IF /proc/net/dev || continue + 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 - echo -n " $IF" done - echo "." + log_action_end_msg 0 ;; status) - for IF in $INTERFACES ; do + [ "$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) - echo -n "Suspending Network Interface Plugging Daemon:" - for IF in $INTERFACES ; do - grep --quiet $IF /proc/net/dev || continue + [ "$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 - echo -n " $IF" done - echo "." + log_action_end_msg 0 ;; resume) - echo -n "Resuming Network Interface Plugging Daemon:" - for IF in $INTERFACES ; do + [ "$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 - echo -n " $IF" done - echo "." + log_action_end_msg 0 ;; force-reload|restart) + [ "$INTERFACES" ] || exit 0 $0 stop $INTERFACES sleep 3 $0 start $INTERFACES diff --git a/debian/postinst b/debian/postinst index c22dbf6..9658ad0 100644 --- a/debian/postinst +++ b/debian/postinst @@ -50,11 +50,84 @@ write_default (){ mv ${DEFAULTTMP} ${DEFAULTFILE} } +INTERFACES_BEFORE="" +INTERFACES_AFTER="" +INTERFACES_START="" +INTERFACES_STOP="" +INTERFACES_RESTART="" + +search_interfaces () { + searchifc=$1 + shift + + for i in $@; do + if [ "$i" = "$searchifc" ]; then + return 0 + fi + done + + return 1 +} + +ifplugd_initscript () { + action=$1 + shift + + if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + invoke-rc.d ifplugd $action $@ + else + /etc/init.d/ifplugd $action $@ + fi +} + case "$1" in configure) - + if [ -s "$DEFAULTFILE" ] ; then + INTERFACES="" + HOTPLUG_INTERFACES="" + . $DEFAULTFILE + INTERFACES_BEFORE="$INTERFACES $HOTPLUG_INTERFACES" + fi + write_db_conf write_default + + if [ -s "$DEFAULTFILE" ] ; then + INTERFACES="" + HOTPLUG_INTERFACES="" + . $DEFAULTFILE + INTERFACES_AFTER="$INTERFACES $HOTPLUG_INTERFACES" + fi + + for IF in $INTERFACES_BEFORE ; do + if search_interfaces $IF $INTERFACES_AFTER ; then + INTERFACES_RESTART="$INTERFACES_RESTART $IF" + else + INTERFACES_STOP="$INTERFACES_STOP $IF" + fi + done + + for IF in $INTERFACES_AFTER ; do + if search_interfaces $IF $INTERFACES_BEFORE ; then + : # already added to INTERFACES_RESTART + else + INTERFACES_START="$INTERFACES_START $IF" + fi + done + + if [ -x "/etc/init.d/ifplugd" ]; then + update-rc.d ifplugd defaults >/dev/null + if [ "$INTERFACES_STOP" ]; then + ifplugd_initscript stop $INTERFACES_STOP + fi + if [ "$INTERFACES_RESTART" ]; then + ifplugd_initscript restart $INTERFACES_RESTART + fi + if [ "$INTERFACES_START" ]; then + ifplugd_initscript start $INTERFACES_START + fi + fi + if [ ! "$2" ] || [ "$2" = "<unknown>" ] ; then # Fresh install for F in /etc/apm/suspend.d/20ifplugd \ diff --git a/debian/postrm b/debian/postrm index b12de11..59518d6 100644 --- a/debian/postrm +++ b/debian/postrm @@ -18,6 +18,8 @@ case "$1" in for f in /etc/apm/suspend.d/20ifplugd /etc/apm/resume.d/80ifplugd /etc/apm/other.d/50ifplugd ; do rm -f $f done + + update-rc.d ifplugd remove >/dev/null ;; remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) diff --git a/debian/prerm b/debian/prerm new file mode 100644 index 0000000..7ad1c5e --- /dev/null +++ b/debian/prerm @@ -0,0 +1,18 @@ +#!/bin/sh -e + +DEFAULTFILE=/etc/default/ifplugd +INTERFACES="" +HOTPLUG_INTERFACES="" + +if [ -x "/etc/init.d/ifplugd" ] && [ "$1" = remove ]; then + if [ -s "$DEFAULTFILE" ]; then + . $DEFAULTFILE + fi + if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + invoke-rc.d ifplugd stop $INTERFACES $HOTPLUG_INTERFACES + else + /etc/init.d/ifplugd stop $INTERFACES $HOTPLUG_INTERFACES + fi +fi + +#DEBHELPER# diff --git a/debian/rules b/debian/rules index d1ccdb9..2d3a6e2 100755 --- a/debian/rules +++ b/debian/rules @@ -80,7 +80,7 @@ binary-arch: build install dh_installchangelogs doc/ChangeLog dh_installdocs dh_installdebconf - dh_installinit + dh_installinit --noscripts dh_installudev dh_installman dh_link |