#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=50

SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1

append_bool() {
	local var="$1"
	local section="$2"
	local option="$3"
	local value="$4"
	local _val
	config_get_bool _val "$section" "$option" 0
	[ $_val -gt 0 ] && append "$var" "$value"
}

append_string() {
	local var="$1"
	local section="$2"
	local option="$3"
	local val="$4"
	local _val
	config_get _val "$section" "$option"
	[ -n "$_val" ] && append "$var" "$val $_val"
}

config_get_ifname() {
	local var="$1"
	local section="$2"
	local option="$3"
	local val="$4"
	local _val
	config_get _val "$section" "$option" "$val"
	[ -n "$_val" ] && config_get "$var" "$_val" 'ifname' "$_val"
}

section_enabled() {
	local enabled
	config_get_bool enabled "$1" 'enabled' 0
	[ $enabled -gt 0 ]
}

start_instance() {
	local section="$1"
	local if
	local args

	section_enabled "$section" || return 1

	config_get_ifname if "$section" 'interface' 'lan'
	args="-n -i $if"
	append_string args "$section" 'ethers' '-e'
	append_bool args "$section" 'verbose' '-v'

	SERVICE_PID_FILE="/var/run/rarpd-${if}.pid"
	service_start /usr/sbin/rarpd $args
}

stop_instance() {
	local section="$1"
	local id
	local if

	section_enabled "$section" || return 1

	config_get_ifname if "$section" 'interface' 'lan'

	SERVICE_PID_FILE="/var/run/rarpd-${if}.pid"
	service_stop /usr/sbin/rarpd
}

start() {
	include /lib/network
	scan_interfaces
	config_load 'rarpd'
	config_foreach start_instance 'rarpd'
}

stop() {
	include /lib/network
	scan_interfaces
	config_load 'rarpd'
	config_foreach stop_instance 'rarpd'
}