#!/bin/sh /etc/rc.common START=90 STOP=89 USE_PROCD=1 service_triggers() { procd_add_reload_trigger "chilli" } config_cb() { local chilli_inst="$2" if [ "$chilli_inst" != "" ]; then chilli_conf="/var/run/chilli_${chilli_inst}.conf" if [ -e "$chilli_conf" ]; then rm -f "$chilli_conf" fi eval "start_chilli_$chilli_inst=1" fi } option_cb() { case "$1" in # UCI settings network) . /lib/functions/network.sh local ifname network_get_device ifname "$2" echo "dhcpif=\"$ifname\"" >> "$chilli_conf" ;; disabled) [ "$(config_get_bool "$1")" = "1" ] && eval "start_chilli_$chilli_inst=0" ;; # boolean settings debug|dhcpbroadcast|nodynip|vlanlocation|locationstopstart|locationcopycalled|locationimmediateupdate|locationopt82|coanoipcheck|noradallow|proxymacaccept|proxyonacct|dhcpmacset|dhcpradius|noc2c|eapolenable|uamanydns|uamanyip|uamnatanyip|nouamsuccess|nowispr1|nowispr2|domaindnslocal|radsec|macauth|macreauth|macauthdeny|macallowlocal|strictmacauth|strictdhcp|ieee8021q|only8021q|radiusoriginalurl|swapoctets|statusfilesave|wpaguests|openidauth|papalwaysok|mschapv2|chillixml|acctupdate|dnsparanoia|seskeepalive|usetap|noarpentries|framedservice|scalewin|redir|injectwispr|redirurl|routeonetone|nousergardendata|uamgardendata|uamotherdata|withunixipc|uamallowpost|redirssl|uamuissl|layer3|patricia|redirdnsreq|dhcpnotidle|ipv6|ipv6only) [ "$2" = "true" -o "$2" = "1" ] && echo "$1" >> "$chilli_conf" ;; *) echo "$1=\"$2\"" >> "$chilli_conf" ;; esac } start_chilli() { local cfg="$1" local start_chilli=$(eval "echo \$start_chilli_$cfg") [ "$start_chilli" = "0" ] && return local base="/var/run/chilli_${cfg}" procd_open_instance "$cfg" procd_set_param command /usr/sbin/chilli procd_set_param file "${base}.conf" procd_append_param command --fg --conf "${base}.conf" --pidfile "${base}.pid" --cmdsocket "${base}.sock" --unixipc "${base}.ipc" procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } start_service() { config_load chilli config_foreach start_chilli chilli } stop_service() { rm -f /var/run/chilli_* } reload_chilli() { local pid local cfg="$1" local base="/var/run/chilli_${cfg}" if [ -f "${base}.pid" ]; then pid="$(cat "${base}.pid")" [ -f "/var/run/chilli.${pid}.cfg.bin" ] && rm -f "/var/run/chilli.${pid}.cfg.bin" chilli_query -s "${base}.sock" reload fi } reload_service() { config_load chilli config_foreach reload_chilli chilli }