#! /bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/upnpd
NAME=upnpd
DESC="Linux IGD Daemon"

test -x $DAEMON || exit 0

# Include upnpd defaults if available
if [ -f /etc/default/upnpd ] ; then
	. /etc/default/upnpd
fi

# Verify options
if [ -z "$EXT_IFACE" ] ; then
	echo "External interface not specified in /etc/default/upnpd" >&2
	exit 1
fi
if [ -z "$INT_IFACE" ] ; then
	echo "Internal interface not specified in /etc/default/upnpd" >&2
	exit 1
fi

set -e

case "$1" in
  start)
	echo -n "Starting $DESC: "
	route add -net 239.0.0.0 netmask 255.0.0.0 $INT_IFACE > /dev/null 2>&1 || true
	start-stop-daemon --start --quiet \
		--exec $DAEMON -- "$EXT_IFACE" "$INT_IFACE"
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet \
		--exec $DAEMON
	route del -net 239.0.0.0 netmask 255.0.0.0 $INT_IFACE > /dev/null 2>&1 || true
	echo "$NAME."
	;;
  reset)
	echo "Resetting $DESC port mappings."
	start-stop-daemon --stop --signal USR1 --quiet \
		--exec $DAEMON
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet \
		--exec $DAEMON
	route del -net 239.0.0.0 netmask 255.0.0.0 $INT_IFACE > /dev/null 2>&1 || true
	sleep 1
	route add -net 239.0.0.0 netmask 255.0.0.0 $INT_IFACE > /dev/null 2>&1 || true
	start-stop-daemon --start --quiet \
		--exec $DAEMON -- "$EXT_IFACE" "$INT_IFACE" 
	echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reset|force-reload}" >&2
	exit 1
	;;
esac

exit 0
