#!/bin/sh /etc/rc.common # Copyright (C) 2006-2011 OpenWrt.org START=50 append_list_item() { local val="$1" local var="$2" append "$var" "$val" } 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" 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 id local if local args section_enabled "$section" || return 1 config_get id "$section" 'virtual_id' '1' config_get_ifname if "$section" 'interface' 'lan' args="-v $id -i $if" append_string args "$section" 'delay' '-d' append_string args "$section" 'priority' '-p' append_bool args "$section" 'no_virtual_mac' '-n' config_list_foreach "$section" 'virtual_ip' append_list_item args SERVICE_PID_FILE="/var/run/vrrpd_${if}_${id}.pid" service_start /usr/sbin/vrrpd $args } stop_instance() { local section="$1" local id local if section_enabled "$section" || return 1 config_get id "$section" 'virtual_id' '1' config_get_ifname if "$section" 'interface' 'lan' SERVICE_PID_FILE="/var/run/vrrpd_${if}_${id}.pid" service_stop /usr/sbin/vrrpd } start() { include /lib/network scan_interfaces config_load 'vrrpd' config_foreach start_instance 'vrrpd' } stop() { include /lib/network scan_interfaces config_load 'vrrpd' config_foreach stop_instance 'vrrpd' }