#!/bin/sh /etc/rc.common
-#
-# Copyright (C) 2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
START=99
-STOP=99
+USE_PROCD=1
alfred_args=""
vis_args=""
facters_dir="/etc/alfred"
-pid_file_alfred="/var/run/alfred.pid"
-pid_file_vis="/var/run/batadv-vis.pid"
enable=0
vis_enable=0
-SERVICE_DAEMONIZE=1
-SERVICE_WRITE_PID=1
-wait_for_dir()
+append_interface()
{
- local ifce="$1" dir="$2"
-
- if ! [ -d "$dir" ] ; then
- timeout=30
- echo "${initscript}: waiting $timeout secs for $ifce interface..."
- for i in $(seq $timeout); do
- sleep 1
- [ -d "$dir" ] && break
- if [ $i == $timeout ] ; then
- echo "${initscript}: $ifce not detected, alfred not starting."
- exit 1
- fi
- done
- fi
+ append "interfaces" "$1" ","
}
-alfred_start()
-{
+alfred_start() {
local args=""
local section="$1"
local disabled interface mode
+ local interfaces
# check if section is disabled
config_get_bool disabled "$section" disabled 0
[ $disabled = 0 ] || return 1
- args=""
+ args="-f"
- config_get interface "$section" interface
- append args "-i $interface"
+ config_list_foreach "$section" "interface" append_interface
+ if [ -z "$interfaces" ]; then
+ config_get interface "$section" interface
+ append_interface "$interface"
+ fi
+ append args "-i $interfaces"
config_get mode "$section" mode
[ "$mode" = "master" ] && append args "-m"
config_get batmanif "$section" batmanif
append args "-b $batmanif"
- if [ "$batmanif" != "none" ]; then
- wait_for_dir "$batmanif" "/sys/class/net/$batmanif/mesh"
- fi
-
- wait_for_dir "$interface" "/sys/class/net/$interface/"
-
append alfred_args "$args"
enable=1
return 0
}
-start()
-{
+start_service() {
config_load "alfred"
config_foreach alfred_start alfred
- if [ "$enable" = "0" ]; then
- exit 0
- fi
+ [ "$enable" = "0" ] && return 0
- echo "${initscript}: starting alfred"
- SERVICE_PID_FILE="$pid_file_alfred"
- service_start /usr/sbin/alfred ${alfred_args}
+ procd_open_instance "alfred"
+ procd_set_param command /usr/sbin/alfred
+ procd_append_param command ${alfred_args}
+ procd_close_instance
- if [ "$vis_enable" = "1" ]; then
- echo "${initscript}: starting batadv-vis"
- SERVICE_PID_FILE="$pid_file_vis"
- service_start /usr/sbin/batadv-vis ${vis_args}
- fi
+ [ "$vis_enable" = "1" ] && {
+ procd_open_instance "batadv-vis"
+ procd_set_param command /usr/sbin/batadv-vis
+ procd_append_param command ${vis_args}
+ procd_close_instance
+ }
- if [ "$run_facters" = "1" ]; then
+ [ "$run_facters" = "1" ] && {
( for file in $facters_dir/* ; do [ -x $file ] && $file ; done )
if ! ( grep -q "for file in $facters_dir/\* ; do " /etc/crontabs/root 2>/dev/null ) ; then
echo "*/5 * * * * ( for file in $facters_dir/* ; do [ -x \$file ] && \$file ; done )" >> /etc/crontabs/root
/etc/init.d/cron enable
/etc/init.d/cron restart
fi
- fi
+ }
}
-stop()
-{
- SERVICE_PID_FILE="$pid_file_alfred"
- service_stop /usr/sbin/alfred
- SERVICE_PID_FILE="$pid_file_vis"
- [ -x /usr/sbin/batadv-vis ] && service_stop /usr/sbin/batadv-vis
- sed "\|for file in $facters_dir/\* ; do |d" -i /etc/crontabs/root
- /etc/init.d/cron restart
+service_triggers() {
+ procd_add_reload_trigger "alfred"
+}
+
+stop_service() {
+ [ -e /etc/crontabs/root ] && {
+ sed "\|for file in $facters_dir/\* ; do |d" -i /etc/crontabs/root
+ /etc/init.d/cron restart
+ }
}