| #!/bin/sh /etc/rc.common |
| # |
| # Copyright (C) 2019 Mister Benjamin <144dbspl@gmail.com> |
| |
| NAME='etherwake-nfqueue' |
| |
| START=60 |
| USE_PROCD=1 |
| |
| PROGRAM=${NAME} |
| |
| start_service() |
| { |
| local value |
| |
| config_load ${NAME} |
| |
| config_get_bool value setup sudo 0 |
| [ "${value}" -ne 0 ] && PROGRAM="sudo ${PROGRAM}" |
| |
| config_get_bool value setup debug 0 |
| if [ "${value}" -ne 0 ]; then |
| PROCD_DEBUG=1 |
| append PROGRAM '-D' |
| fi |
| |
| config_foreach start_instance target |
| } |
| |
| start_instance() |
| { |
| local section="$1" |
| local value name mac |
| |
| config_get_bool value "${section}" enabled 1 |
| [ "${value}" -ne 1 ] && return 0 |
| |
| config_get value "${section}" name |
| [ -z "${value}" ] && value="{section}" |
| name=${value} |
| |
| config_get mac "${section}" mac |
| [ -z "${mac}" ] && { |
| echo "${initscript}: Target ${name} has no MAC address" |
| return 1 |
| } |
| |
| procd_open_instance ${name} |
| procd_set_param command ${PROGRAM} |
| procd_set_param respawn |
| procd_set_param stdout 1 |
| procd_set_param stderr 1 |
| |
| config_get_bool value "${section}" broadcast 0 |
| [ "${value}" -ne 0 ] && procd_append_param command -b |
| |
| config_get value "${section}" interface |
| [ -n "${value}" ] && procd_append_param command -i "${value}" |
| |
| config_get value "${section}" password |
| [ -n "${value}" ] && procd_append_param command -p "${value}" |
| |
| config_get value "${section}" nfqueue_num 0 |
| procd_append_param command -q "${value}" |
| |
| procd_append_param command "${mac}" |
| |
| procd_close_instance |
| } |