fstools: add the new fstools package
[openwrt.git] / package / network / services / mdnsd / files / relay.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (c) 2011-2012 OpenWrt.org
3
4 START=80
5
6 USE_PROCD=1
7 PROG=/usr/sbin/relayd
8
9 resolve_ifname() {
10         grep -qs "^ *$1:" /proc/net/dev && {
11                 procd_append_param command -I "$1"
12                 append ifaces "$1"
13         }
14 }
15
16 resolve_network() {
17         local ifn
18         fixup_interface "$1"
19         config_get ifn "$1" ifname
20         [ -z "$ifn" ] && return 1
21         resolve_ifname "$ifn"
22 }
23
24 start_relay() {
25         local cfg="$1"
26
27         local args=""
28         local ifaces=""
29
30         config_get proto "$cfg" proto
31         [[ "$proto" == relay ]] || return 0
32
33         SERVICE_DAEMONIZE=1
34         SERVICE_WRITE_PID=1
35         SERVICE_PID_FILE="/var/run/relay-$cfg.pid"
36         [ -f "$SERVICE_PID_FILE" ] && {
37                 if grep -q relayd "/proc/$(cat $SERVICE_PID_FILE)/cmdline"; then
38                         return 0
39                 else
40                         rm -f "$SERVICE_PID_FILE"
41                 fi
42         }
43
44         procd_open_instance
45         procd_set_param command "$PROG"
46
47         local net networks
48         config_get networks "$cfg" network
49         for net in $networks; do
50                 resolve_network "$net" || {
51                         return 1
52                 }
53         done
54
55         local ifn ifnames
56         config_get ifnames "$cfg" ifname
57         for ifn in $ifnames; do
58                 resolve_ifname "$ifn"
59         done
60
61         local ipaddr
62         config_get ipaddr "$cfg" ipaddr
63         [ -n "$ipaddr" ] && procd_append_param command -L "$ipaddr"
64
65         local gateway
66         config_get gateway "$cfg" gateway
67         [ -n "$gateway" ] && procd_append_param command -G "$gateway"
68
69         local expiry # = 30
70         config_get expiry "$cfg" expiry
71         [ -n "$expiry" ] && procd_append_param command "$expiry"
72
73         local retry # = 5
74         config_get retry "$cfg" retry
75         [ -n "$retry" ] && procd_append_param command -p "$retry"
76
77         local table # = 16800
78         config_get table "$cfg" table
79         [ -n "$table" ] && procd_append_param command -T "$table"
80
81         local fwd_bcast # = 1
82         config_get_bool fwd_bcast "$cfg" forward_bcast 1
83         [ $fwd_bcast -eq 1 ] && procd_append_param command "-B"
84
85         local fwd_dhcp # = 1
86         config_get_bool fwd_dhcp "$cfg" forward_dhcp 1
87         [ $fwd_dhcp -eq 1 ] && procd_append_param command "-D"
88
89         procd_close_instance
90 }
91
92 service_triggers()
93 {
94         procd_add_reload_trigger "network"
95 }
96
97 start_service() {
98         include /lib/network
99         config_load network
100         config_foreach start_relay interface
101 }