1 #!/bin/sh /etc/rc.common
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
12 facters_dir
="/etc/alfred"
17 local ifce
="$1" dir
="$2"
19 if ! [ -d "$dir" ] ; then
21 echo "waiting $timeout secs for $ifce interface..."
22 for i
in $
(seq $timeout); do
24 [ -d "$dir" ] && break
25 if [ $i = $timeout ] ; then
26 echo "$ifce not detected, alfred not starting."
35 wait_for_ll_address
() {
39 echo "waiting $timeout secs for $iface address..."
40 for i
in $
(seq $timeout); do
42 # - the link-local address (starts with fe80)
43 # - without tentative flag (bit 0x40 in the flags field; the first char of the fifth field is evaluated)
44 # - on interface $iface
47 $1 ~ /^fe80/ && $5 ~ /^[012389ab]/ && $6 == "'"$iface"'" { RET=0 }
49 ' /proc
/net
/if_inet6
; then
55 echo "$iface address not detected, alfred not starting."
61 append
"interfaces" "$1" ","
62 wait_for_ll_address
"$1"
68 local disabled interface mode
71 # check if section is disabled
72 config_get_bool disabled
"$section" disabled
0
73 [ $disabled = 0 ] ||
return 1
77 config_list_foreach
"$section" "interface" append_interface
78 if [ -z "$interfaces" ]; then
79 config_get interface
"$section" interface
80 append_interface
"$interface"
82 append args
"-i $interfaces"
84 config_get mode
"$section" mode
85 [ "$mode" = "master" ] && append args
"-m"
87 config_get batmanif
"$section" batmanif
88 append args
"-b $batmanif"
90 if [ "$batmanif" != "none" ]; then
91 wait_for_dir
"$batmanif" "/sys/devices/virtual/net/$batmanif" ||
return 1
94 append alfred_args
"$args"
97 config_get_bool start_vis
"$section" start_vis
0
98 if [ "$start_vis" = 1 ] && [ -x /usr
/sbin
/batadv-vis
]; then
100 append vis_args
"-i $batmanif -s"
103 config_get_bool run_facters
"$section" run_facters
0
110 config_foreach alfred_start alfred
112 [ "$enable" = "0" ] && return 0
114 procd_open_instance
"alfred"
115 procd_set_param
command /usr
/sbin
/alfred
116 procd_append_param
command ${alfred_args}
119 [ "$vis_enable" = "1" ] && {
120 procd_open_instance
"batadv-vis"
121 procd_set_param
command /usr
/sbin
/batadv-vis
122 procd_append_param
command ${vis_args}
126 [ "$run_facters" = "1" ] && {
127 ( for file in $facters_dir/* ; do [ -x $file ] && $file ; done )
128 if ! ( grep -q "for file in $facters_dir/\* ; do " /etc
/crontabs
/root
2>/dev
/null
) ; then
129 echo "*/5 * * * * ( for file in $facters_dir/* ; do [ -x \$file ] && \$file ; done )" >> /etc
/crontabs
/root
130 /etc
/init.d
/cron
enable
131 /etc
/init.d
/cron restart
137 procd_add_reload_trigger
"alfred"
141 [ -e /etc
/crontabs
/root
] && {
142 sed "\|for file in $facters_dir/\* ; do |d" -i /etc
/crontabs
/root
143 /etc
/init.d
/cron restart