| #!/bin/sh /etc/rc.common | 
 | # Copyright (C) 2015 OpenWrt.org | 
 | # Copyright (C) 2020 Nishant Sharma <nishant@hopbox.in> | 
 |  | 
 | START=89 | 
 | STOP=11 | 
 |  | 
 | USE_PROCD=1 | 
 | PROG=/usr/bin/udpspeeder | 
 |  | 
 | validate_udpspeeder_section() { | 
 | 	uci_validate_section udpspeeder udpspeeder "${1}" \ | 
 | 		'enabled:bool:0'		\ | 
 | 		'server:bool:0' 		\ | 
 | 		'mode:integer:0' 		\ | 
 | 		'mtu:integer:1250' 		\ | 
 | 		'timeout:integer:8'		\ | 
 | 		'local:string'			\ | 
 | 		'remote:string'			\ | 
 | 		'report:integer:10'		\ | 
 | 		'disable_obscure:bool:0'	\ | 
 | 		'interval:integer:0'		\ | 
 | 		'fec:string:20:10'		\ | 
 | 		'disable_fec:bool:0'		\ | 
 | 		'sock_buf:integer:1024'		\ | 
 | 		'log_level:integer:4'		\ | 
 | 		'decode_buf:integer:2000'	\ | 
 | 		'fix_latency:bool:0'		\ | 
 | 		'queue_len:integer:200'		 | 
 | } | 
 |  | 
 | start_instance() { | 
 |  | 
 | 	local section="$1" | 
 |  | 
 | 	local server mode mtu timeout local remote report disable_obscure fifo interval fec disable_fec sock_buf queue_len \ | 
 | 		decode_buf sock_buf log_level enabled | 
 |  | 
 | 	fifo="/tmp/udpspeeder-${section}.fifo" | 
 |  | 
 | 	validate_udpspeeder_section $section || { | 
 | 		echo "validation failed" | 
 | 		return 1 | 
 | 	} | 
 |  | 
 | 	if [ "${enabled}" -ne 1 ] | 
 | 	then | 
 | 		return 1 | 
 | 	fi | 
 |  | 
 | 	procd_open_instance | 
 | 	procd_set_param respawn | 
 | 	procd_set_param stderr 1 | 
 | 	procd_set_param stdout 1 | 
 |  | 
 | 	procd_set_param command "${PROG}" | 
 |  | 
 | 	if [ "${server}" -eq 1 ] | 
 | 	then | 
 | 		procd_append_param command -s | 
 | 	else | 
 | 		procd_append_param command -c | 
 | 	fi | 
 |  | 
 | 	if [ "${disable_fec}" -eq 1 ] | 
 | 	then | 
 | 		procd_append_param command --disable-fec | 
 | 	else | 
 | 		procd_append_param command --fec "${fec}" | 
 | 	fi | 
 |  | 
 | 	if [ "${fix_latency}" -eq 1 ] && [ "${mode}" -eq 0 ] | 
 | 	then | 
 | 		procd_append_param command --fix-latency | 
 | 	fi | 
 |  | 
 | 	if [ "${disable_obscure}" -eq 1 ] | 
 | 	then | 
 | 		procd_append_param command --disable-obscure | 
 | 	fi | 
 |  | 
 | 	procd_append_param command -l "${local}" | 
 | 	procd_append_param command -r "${remote}" | 
 | 	procd_append_param command --mode "${mode}" | 
 | 	procd_append_param command --report "${report}" | 
 | 	procd_append_param command --interval "${interval}" | 
 | 	procd_append_param command --mtu "${mtu}" | 
 | 	procd_append_param command --sock-buf "${sock_buf}" | 
 | 	procd_append_param command --decode-buf "${decode_buf}" | 
 | 	procd_append_param command --queue-len "${queue_len}" | 
 | 	procd_append_param command --log-level "${log_level}" | 
 | 	procd_append_param command --fifo "${fifo}" | 
 | 	 | 
 | #	procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} | 
 | 	procd_close_instance | 
 | } | 
 |  | 
 | start_service() { | 
 |  | 
 | 	config_load 'udpspeeder' | 
 | 	config_foreach start_instance 'udpspeeder' | 
 |  | 
 | } | 
 |  | 
 | stop_service() | 
 | { | 
 | 	service_stop ${PROG} | 
 | } | 
 |  | 
 | service_triggers() | 
 | { | 
 | 	procd_add_reload_trigger "udpspeeder" | 
 | 	procd_add_validation validate_udpspeeder_section | 
 | } |