| #!/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 |
| } |