#!/bin/sh NAME=upnpd PIDFILE=/var/run/$NAME.pid DAEMON=/usr/sbin/$NAME CFGFILE=/etc/default/$NAME LAN=eth0 WAN=eth0 # For the UPnP library to function correctly, networking must be configured # properly for multicasting as described in # https://sourceforge.net/p/pupnp/code/ci/master/tree/README. # Without this addition, device advertisements and control point searches will # not function. # However, the route has to be configured once for all UPnP applications # (igd2-for-linux, ushare, ...) so do not manage UPnP route by default MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN=0 # Read configuration variable file if it is present if [ -f $CFGFILE ]; then . $CFGFILE fi DAEMON_ARGS="-f $WAN $LAN" start() { if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then printf "Add UPnP multicast route on $LAN\n" route add -net 239.0.0.0 netmask 255.0.0.0 $LAN fi printf "Starting $NAME: " start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS [ $? = 0 ] && echo "OK" || echo "FAIL" } stop() { printf "Stopping $NAME: " start-stop-daemon -K -q -p $PIDFILE [ $? = 0 ] && echo "OK" || echo "FAIL" if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then printf "Remove UPnP multicast route on $LAN\n" route del -net 239.0.0.0 netmask 255.0.0.0 $LAN fi } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart|reload) restart ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac exit $?