1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunNAME=upnpd 4*4882a593SmuzhiyunPIDFILE=/var/run/$NAME.pid 5*4882a593SmuzhiyunDAEMON=/usr/sbin/$NAME 6*4882a593SmuzhiyunCFGFILE=/etc/default/$NAME 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunLAN=eth0 9*4882a593SmuzhiyunWAN=eth0 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun# For the UPnP library to function correctly, networking must be configured 12*4882a593Smuzhiyun# properly for multicasting as described in 13*4882a593Smuzhiyun# https://sourceforge.net/p/pupnp/code/ci/master/tree/README. 14*4882a593Smuzhiyun# Without this addition, device advertisements and control point searches will 15*4882a593Smuzhiyun# not function. 16*4882a593Smuzhiyun# However, the route has to be configured once for all UPnP applications 17*4882a593Smuzhiyun# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default 18*4882a593SmuzhiyunMANAGE_UPNP_MULTICAST_ROUTE_ON_LAN=0 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun# Read configuration variable file if it is present 21*4882a593Smuzhiyunif [ -f $CFGFILE ]; then 22*4882a593Smuzhiyun . $CFGFILE 23*4882a593Smuzhiyunfi 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunDAEMON_ARGS="-f $WAN $LAN" 26*4882a593Smuzhiyun 27*4882a593Smuzhiyunstart() { 28*4882a593Smuzhiyun if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then 29*4882a593Smuzhiyun printf "Add UPnP multicast route on $LAN\n" 30*4882a593Smuzhiyun route add -net 239.0.0.0 netmask 255.0.0.0 $LAN 31*4882a593Smuzhiyun fi 32*4882a593Smuzhiyun printf "Starting $NAME: " 33*4882a593Smuzhiyun start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS 34*4882a593Smuzhiyun [ $? = 0 ] && echo "OK" || echo "FAIL" 35*4882a593Smuzhiyun} 36*4882a593Smuzhiyun 37*4882a593Smuzhiyunstop() { 38*4882a593Smuzhiyun printf "Stopping $NAME: " 39*4882a593Smuzhiyun start-stop-daemon -K -q -p $PIDFILE 40*4882a593Smuzhiyun [ $? = 0 ] && echo "OK" || echo "FAIL" 41*4882a593Smuzhiyun if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then 42*4882a593Smuzhiyun printf "Remove UPnP multicast route on $LAN\n" 43*4882a593Smuzhiyun route del -net 239.0.0.0 netmask 255.0.0.0 $LAN 44*4882a593Smuzhiyun fi 45*4882a593Smuzhiyun} 46*4882a593Smuzhiyun 47*4882a593Smuzhiyunrestart() { 48*4882a593Smuzhiyun stop 49*4882a593Smuzhiyun start 50*4882a593Smuzhiyun} 51*4882a593Smuzhiyun 52*4882a593Smuzhiyuncase "$1" in 53*4882a593Smuzhiyun start) 54*4882a593Smuzhiyun start 55*4882a593Smuzhiyun ;; 56*4882a593Smuzhiyun stop) 57*4882a593Smuzhiyun stop 58*4882a593Smuzhiyun ;; 59*4882a593Smuzhiyun restart|reload) 60*4882a593Smuzhiyun restart 61*4882a593Smuzhiyun ;; 62*4882a593Smuzhiyun *) 63*4882a593Smuzhiyun echo "Usage: $0 {start|stop|restart|reload}" 64*4882a593Smuzhiyun exit 1 65*4882a593Smuzhiyunesac 66*4882a593Smuzhiyun 67*4882a593Smuzhiyunexit $? 68