summaryrefslogtreecommitdiffstats
path: root/net/vrrpd/files/vrrpd.init
blob: 71e5967a97599cbd794af8b884d36c356c0a5128 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2012 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"
}

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

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

	section_enabled "$section" || return 1

	config_get id "$section" 'virtual_id' '1'
	config_get if "$section" 'interface' 'lan'
	network_get_device dev "$if" && {
		args="-v $id -i $dev"
		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_${dev}_${id}.pid"
		service_start /usr/sbin/vrrpd $args
	}
}

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

	section_enabled "$section" || return 1

	config_get id "$section" 'virtual_id' '1'
	config_get if "$section" 'interface' 'lan'
	network_get_device dev "$if"

	SERVICE_PID_FILE="/var/run/vrrpd_${dev}_${id}.pid"
	service_stop /usr/sbin/vrrpd
}

start() {
	. /lib/functions/network.sh
	config_load 'vrrpd'
	config_foreach start_instance 'vrrpd'
}

stop() {
	. /lib/functions/network.sh
	config_load 'vrrpd'
	config_foreach stop_instance 'vrrpd'
}