blob: 0be740db8526e235133dd5625db98989485b8b38 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh /etc/rc.common
2#
3# Copyright (C) 2019 Mister Benjamin <144dbspl@gmail.com>
4
5NAME='etherwake-nfqueue'
6
7START=60
8USE_PROCD=1
9
10PROGRAM=${NAME}
11
12start_service()
13{
14 local value
15
16 config_load ${NAME}
17
18 config_get_bool value setup sudo 0
19 [ "${value}" -ne 0 ] && PROGRAM="sudo ${PROGRAM}"
20
21 config_get_bool value setup debug 0
22 if [ "${value}" -ne 0 ]; then
23 PROCD_DEBUG=1
24 append PROGRAM '-D'
25 fi
26
27 config_foreach start_instance target
28}
29
30start_instance()
31{
32 local section="$1"
33 local value name mac
34
35 config_get_bool value "${section}" enabled 1
36 [ "${value}" -ne 1 ] && return 0
37
38 config_get value "${section}" name
39 [ -z "${value}" ] && value="{section}"
40 name=${value}
41
42 config_get mac "${section}" mac
43 [ -z "${mac}" ] && {
44 echo "${initscript}: Target ${name} has no MAC address"
45 return 1
46 }
47
48 procd_open_instance ${name}
49 procd_set_param command ${PROGRAM}
50 procd_set_param respawn
51 procd_set_param stdout 1
52 procd_set_param stderr 1
53
54 config_get_bool value "${section}" broadcast 0
55 [ "${value}" -ne 0 ] && procd_append_param command -b
56
57 config_get value "${section}" interface
58 [ -n "${value}" ] && procd_append_param command -i "${value}"
59
60 config_get value "${section}" password
61 [ -n "${value}" ] && procd_append_param command -p "${value}"
62
63 config_get value "${section}" nfqueue_num 0
64 procd_append_param command -q "${value}"
65
66 procd_append_param command "${mac}"
67
68 procd_close_instance
69}