#!/bin/sh /etc/rc.common # Copyright (C) 2006-2011 OpenWrt.org START=50 PROG=/usr/sbin/iodined USE_PROCD=1 NAME=iodined validate_section_iodined() { uci_load_validate iodined iodined "$1" "$2" \ 'enable:bool:1' \ 'address:cidr4' \ 'password:string' \ 'tunnelip:cidr4' \ 'tld:string' \ 'port:range(0,65535)' \ 'debuglevel:range(0,6):0' \ 'client_ip_check:bool:1' } iodined_instance() { [ "$2" = 0 ] || { echo "validation failed" return 1 } [ "$enable" = "0" ] && return 1 procd_open_instance procd_set_param command "$PROG" -f [ -n "$address" ] && procd_append_param command -l "$address" [ -n "$password" ] && procd_append_param command -P "$password" [ -n "$port" ] && procd_append_param command -p "$port" [ "$debuglevel" -gt 0 ] && procd_append_param command -$(printf 'D%.0s' $(seq $debuglevel)) [ "$client_ip_check" -eq 0 ] && procd_append_param command -c procd_append_param command "$tunnelip" "$tld" procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } start_service () { config_load "$NAME" config_foreach validate_section_iodined iodined iodined_instance } service_triggers() { procd_add_reload_trigger "$NAME" procd_add_validation validate_section_iodined }