#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2010 OpenWrt.org
START=99

append_bool() {
	local section="$1"
	local option="$2"
	local value="$3"
	local _loctmp
	config_get_bool _loctmp "$section" "$option" 0
	[ "$_loctmp" -gt 0 ] && append args "$value"
}

append_parm() {
	local section="$1"
	local option="$2"
	local switch="$3"
	local _loctmp
	config_get _loctmp "$section" "$option"
	[ -z "$_loctmp" ] && return 0
	append args "$switch $_loctmp"
}

directory=""

btpd() {
	local cfg="$1"
	append_bool "$cfg" useipv4 "-4"
	append_bool "$cfg" useipv6 "-6"
	append_bool "$cfg" emptystart "--empty-start"
	append_parm "$cfg" port "-p"
	append_parm "$cfg" directory "-d"
	append_parm "$cfg" maxpeers "--max-peers"
	append_parm "$cfg" maxuploads "--max-uploads"
	append_parm "$cfg" maxkbin "--bw-in"
	append_parm "$cfg" maxkbout "--bw-out"
	config_get directory "$cfg" directory
}

start() {
	include /lib/network
	config_load btpd
	args=""
	config_foreach btpd btpd
	/usr/bin/btpd $args
}

stop() {
	include /lib/network
	config_load btpd
	args=""
	config_foreach btpd btpd
	
	[ -d $directory ] && args="-d $directory "
	echo -n "stop btpd "
	
	while btcli $args kill ; do
		echo -n .
		sleep 3
	done 2>/dev/null
	
	killall /usr/bin/btpd > /dev/null 2>&1
	
	echo " done"
	return 0
}