#!/bin/sh /etc/rc.common # Copyright (C) 2019 Dengfeng Liu START=99 USE_PROCD=1 NAME=kcptun-c PROG=/usr/bin/${NAME} validate_section_kcptun() { uci_load_validate "${NAME}" kcptun "$1" "$2" \ 'local_port:port' \ 'remote_ip:string' \ 'remote_port:port' \ 'mode:string' \ 'nocomp:bool' \ 'sndwnd:uinteger' \ 'rcvwnd:uinteger' \ 'disabled:bool' } kcptun_instance() { [ "$2" = 0 ] || { echo "validation failed" return 1 } [ "${disabled}" = "1" ] && return 1 [ "${local_port}" -gt 0 ] && [ "${local_port}" -lt 65536 ] || return 1 [ "${remote_port}" -gt 0 ] && [ "${remote_port}" -lt 65536 ] || return 1 [ -n "${remote_ip}" ] || { return 1 } procd_open_instance procd_set_param command "${PROG}" procd_append_param command --localaddr ":${local_port}" procd_append_param command --remoteaddr "${remote_ip}:${remote_port}" [ -n "${mode}" ] && procd_append_param command --mode "${mode}" [ "${nocomp}" -eq 1 ] && procd_append_param command --nocomp [ "${sndwnd}" -gt 0 ] && procd_append_param command --sndwnd "${sndwnd}" [ "${rcvwnd}" -gt 0 ] && procd_append_param command --rcvwnd "${rcvwnd}" procd_set_param respawn procd_close_instance } start_service() { config_load "${NAME}" config_foreach validate_section_kcptun kcptun kcptun_instance }