#!/sbin/openrc-run

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 $?
}
