1 #!/bin/sh /etc/rc.common
4 # Copyright (C) 2013 OpenWrt.org
6 # This is free software, licensed under the GNU General Public License v2.
7 # See /LICENSE for more information.
14 facters_dir="/etc/alfred"
15 pid_file_alfred="/var/run/alfred.pid"
16 pid_file_vis="/var/run/batadv-vis.pid"
24 local ifce="$1" dir="$2"
26 if ! [ -d "$dir" ] ; then
28 echo "${initscript}: waiting $timeout secs for $ifce interface..."
29 for i in $(seq $timeout); do
31 [ -d "$dir" ] && break
32 if [ $i == $timeout ] ; then
33 echo "${initscript}: $ifce not detected, alfred not starting."
45 echo "${initscript}: waiting $timeout secs for $iface address..."
46 for i in $(seq $timeout); do
48 # - the link-local address (starts with fe80)
49 # - without tentative flag (bit 0x40 in the flags field; the first char of the flags field begins 38 columns after the fe80 prefix
50 # - on interface $iface
53 /^fe80.{37} [012389ab]/ { if ($6 == "'"$iface"'") RET=0 }
55 ' /proc/net/if_inet6; then
61 echo "${initscript}: $iface address not detected, alfred not starting."
69 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_get interface "$section" interface
78 append args "-i $interface"
80 config_get mode "$section" mode
81 [ "$mode" = "master" ] && append args "-m"
83 config_get batmanif "$section" batmanif
84 append args "-b $batmanif"
86 if [ "$batmanif" != "none" ]; then
87 wait_for_dir "$batmanif" "/sys/class/net/$batmanif/mesh"
90 wait_for_ll_address "$interface"
92 append alfred_args "$args"
95 config_get_bool start_vis "$section" start_vis 0
96 if [ "$start_vis" = 1 ] && [ -x /usr/sbin/batadv-vis ]; then
98 append vis_args "-i $batmanif -s"
101 config_get_bool run_facters "$section" run_facters 0
109 config_foreach alfred_start alfred
111 if [ "$enable" = "0" ]; then
115 echo "${initscript}: starting alfred"
116 SERVICE_PID_FILE="$pid_file_alfred"
117 service_start /usr/sbin/alfred ${alfred_args}
119 if [ "$vis_enable" = "1" ]; then
120 echo "${initscript}: starting batadv-vis"
121 SERVICE_PID_FILE="$pid_file_vis"
122 service_start /usr/sbin/batadv-vis ${vis_args}
125 if [ "$run_facters" = "1" ]; then
126 ( for file in $facters_dir/* ; do [ -x $file ] && $file ; done )
127 if ! ( grep -q "for file in $facters_dir/\* ; do " /etc/crontabs/root 2>/dev/null ) ; then
128 echo "*/5 * * * * ( for file in $facters_dir/* ; do [ -x \$file ] && \$file ; done )" >> /etc/crontabs/root
129 /etc/init.d/cron enable
130 /etc/init.d/cron restart
137 SERVICE_PID_FILE="$pid_file_alfred"
138 service_stop /usr/sbin/alfred
139 SERVICE_PID_FILE="$pid_file_vis"
140 [ -x /usr/sbin/batadv-vis ] && service_stop /usr/sbin/batadv-vis
141 sed "\|for file in $facters_dir/\* ; do |d" -i /etc/crontabs/root
142 /etc/init.d/cron restart