[ -d "$dir" ] && break
if [ $i = $timeout ] ; then
echo "$ifce not detected, alfred not starting."
- exit 1
+ return 1
fi
done
fi
+
+ return 0
}
wait_for_ll_address() {
$1 ~ /^fe80/ && $5 ~ /^[012389ab]/ && $6 == "'"$iface"'" { RET=0 }
END { exit RET }
' /proc/net/if_inet6; then
- return
+ return 0
fi
sleep 1
done
echo "$iface address not detected, alfred not starting."
- exit 1
+ return 1
+}
+
+append_interface()
+{
+ append "interfaces" "$1" ","
+ wait_for_ll_address "$1"
}
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
args=""
- 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"
append args "-b $batmanif"
if [ "$batmanif" != "none" ]; then
- wait_for_dir "$batmanif" "/sys/class/net/$batmanif/mesh"
+ wait_for_dir "$batmanif" "/sys/devices/virtual/net/$batmanif" || return 1
fi
- wait_for_ll_address "$interface"
-
append alfred_args "$args"
enable=1
config_load "alfred"
config_foreach alfred_start alfred
- [ "$enable" = "0" ] && { exit 0 }
+ [ "$enable" = "0" ] && return 0
procd_open_instance "alfred"
procd_set_param command /usr/sbin/alfred