#!/bin/sh /etc/rc.common # Copyright (C) 2008-2014 OpenWrt.org START=99 STOP=99 USE_PROCD=1 PROG=/usr/bin/socat NAME=socat validate_section_socat() { uci_load_validate socat socat "$1" "$2" \ 'enable:bool:1' \ 'SocatOptions:or(string, list(string))' \ 'user:string:root' } append_param_command() { procd_append_param command "$1" } socat_instance() { local is_list local user [ "$2" = 0 ] || { echo "validation failed" return 1 } [ "$enable" = "0" ] && return 1 procd_open_instance procd_set_param command "$PROG" config_get is_list "$1" SocatOptions_LENGTH if [ -z "$is_list" ]; then procd_append_param command $SocatOptions else config_list_foreach "$1" SocatOptions append_param_command fi config_get user "$1" user if [ -n "$user" ]; then procd_set_param user $user fi procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } start_service () { config_load "$NAME" config_foreach validate_section_socat socat socat_instance } service_triggers() { procd_add_reload_trigger "$NAME" procd_add_validation validate_section_socat }