#!/sbin/runscript

MINISSDPD="/usr/sbin/minissdpd"
PIDFILE="/var/run/minissdpd.pid"

depend() {
	need net
	before miniupnpd
}

interfaceup() {
	# interface exists?
	if [ ! -f /sys/class/net/$1/flags ]; then return 1; fi
	let "IFUP = `cat /sys/class/net/$1/flags` & 1"
	# interface has UP flag?
	if [ $IFUP -eq 0 ]; then return 1; fi
	return 0
}

# awk script: scans the /proc routing table for local subnets
# 1. filter list for entries with a gateway (column 3) of 0.0.0.0 (ie interface-local)
# 2. read column 2 for network-order hex encoded subnet address
# 3. match against a 10.x.x.x, 172.(16-31).x.x, or 192.168.x.x address
# 4. print out any interface (column 1) that matches
privateinterfaces() {
	awk -f - /proc/net/route <<'FindPrivateNetworks'
function p(m,n) { return(and(IP,m) == n); }
$3=="00000000" { IP=strtonum("0x"$2); if (p(0xff,0x0a) || p(0x1fff,0x10ac) || p(0xffff,0xa8c0)) print $1; }
FindPrivateNetworks
}

start() {
	ebegin "Starting minissdpd"

	ARGS=""
	if [ "x$MINISSDPD_IFACE" = "x" ]; then
		ewarn "No interfaces provided, using interfaces on private networks"
		IFLIST=$(privateinterfaces)
	else
		IFLIST="$MINISSDPD_IFACE"
	fi

	eindent
	for IF in $IFLIST; do
		if interfaceup $IF; then
			einfo Adding interface $IF
			ARGS+="-i $IF "
		else
			ewarn "Interface $IF is not up"
		fi
	done
	eoutdent
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $MINISSDPD -- $ARGS
	eend $?
}

stop() {
	ebegin "Stopping minissdpd"
	start-stop-daemon --stop --pidfile "${PIDFILE}"
	eend $?
}
