--- /dev/null
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: wpa-ifupdown
+# Required-Start: $network
+# Required-Stop: $network $remote_fs
+# Should-Start:
+# Should-Stop:
+# Default-Start:
+# Default-Stop: 0 6
+# Short-Description: Stop wpa_supplicant processes started via ifupdown
+# Description: Run ifdown on interfaces authenticated via
+# wpa_supplicant. Sendsigs terminates wpa_supplicant
+# processes before networking is stopped causing each
+# network interface authenticated via a wpa_supplicant
+# daemon to be terminated abrubtly.
+# Since initscripts package version 2.86.ds1-48 an
+# interface exists to omit process id's from sendsigs. If
+# this interface is present this script is a no-op.
+### END INIT INFO
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+test -d /var/run || exit 0
+
+test -x /sbin/ifdown || exit 0
+
+. /lib/lsb/init-functions
+
+stop_wpa_action () {
+ test -x /sbin/wpa_action || return 0
+ IFACES=$(find /var/run -maxdepth 1 -type f -name 'wpa_action.*.pid' -printf '%P\n' | \
+ cut -d'.' -f2 2>/dev/null)
+ if test -n "$IFACES"; then
+ log_daemon_msg "Stopping wpa_action roaming interfaces"
+ for iface in $IFACES; do
+ log_progress_msg "$iface"
+ # wpa_action executes /sbin/ifdown
+ wpa_action "$iface" stop >/dev/null 2>&1
+ done
+ log_end_msg 0
+ fi
+}
+
+stop_wpa_supplicant () {
+ IFACES=$(find /var/run -maxdepth 1 -type f -name 'wpa_supplicant.*.pid' -printf '%P\n' | \
+ grep -v wpa_supplicant.dbus.pid | cut -d'.' -f2 2>/dev/null)
+ if test -n "$IFACES"; then
+ log_daemon_msg "Stopping wpa_supplicant interfaces"
+ for iface in $IFACES; do
+ log_progress_msg "$iface"
+ ifdown "$iface" >/dev/null 2>&1
+ done
+ log_end_msg 0
+ fi
+}
+
+sendsigs_omission_support () {
+ if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then
+ # Debian
+ return 0
+ elif [ -d /var/run/sendsigs.omit.d/ ]; then
+ # Ubuntu, cf. https://bugs.launchpad.net/bugs/181541
+ return 0
+ fi
+
+ return 1
+}
+
+case "$1" in
+ start|restart|force-reload)
+ # No-op
+ ;;
+ stop)
+ if sendsigs_omission_support; then
+ stop_wpa_action
+ else
+ stop_wpa_action
+ stop_wpa_supplicant
+ fi
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+exit 0