#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2014 OpenWrt.org

START=50
USE_PROCD=1

udpxy_parse() {
	local cfg="$1"

	local cfg_verbose
	local cfg_status
	local cfg_mcsub_renew
	local cfg_bind
	local cfg_port
	local cfg_source
	local cfg_max_clients
	local cfg_log_file
	local cfg_buffer_size
	local cfg_buffer_messages
	local cfg_buffer_time
	local cfg_nice_increment
	local cfg_mcsub_renew

	config_get_bool cfg_verbose $cfg 'verbose' 0
	config_get_bool cfg_status $cfg 'status' 1
	config_get cfg_bind $cfg 'bind'
	config_get cfg_port $cfg 'port' '4022'
	config_get cfg_source $cfg 'source'
	config_get cfg_max_clients $cfg 'max_clients'
	config_get cfg_log_file $cfg 'log_file'
	config_get cfg_buffer_size $cfg 'buffer_size'
	config_get cfg_buffer_messages $cfg 'buffer_messages'
	config_get cfg_buffer_time $cfg 'buffer_time'
	config_get cfg_nice_increment $cfg 'nice_increment'
	config_get cfg_mcsub_renew $cfg 'mcsub_renew'

	procd_open_instance

	procd_set_param command /usr/bin/udpxy
	procd_append_param command -T -p $cfg_port
	[ "$cfg_verbose" -eq 1 ] && procd_append_param command -v
	[ "$cfg_status" -eq 1 ] && procd_append_param command -S
	[ ! -z "$cfg_bind" ] && procd_append_param command -a $cfg_bind
	[ ! -z "$cfg_source" ] && procd_append_param command -m $cfg_source
	[ ! -z "$cfg_max_clients" ] && procd_append_param command -c $cfg_max_clients
	[ ! -z "$cfg_log_file" ] && procd_append_param command -l $cfg_log_file
	[ ! -z "$cfg_buffer_size" ] && procd_append_param command -B $cfg_buffer_size
	[ ! -z "$cfg_buffer_messages" ] && procd_append_param command -R $cfg_buffer_messages
	[ ! -z "$cfg_buffer_time" ] && procd_append_param command -H $cfg_buffer_time
	[ ! -z "$cfg_nice_increment" ] && procd_append_param command -n $cfg_nice_increment
	[ ! -z "$cfg_mcsub_renew" ] && procd_append_param command -M $cfg_mcsub_renew

	procd_set_param respawn
	procd_close_instance
}

start_service() {
	config_load udpxy
	config_foreach udpxy_parse udpxy
}