First Commit
[librecmc/package-feed.git] / net / isc-dhcp / files / dhcrelay4.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2012 OpenWrt.org
3
4 START=91
5
6 SERVICE_SIG="KILL"
7 SERVICE_PID_FILE="/var/run/dhcrelay4.pid"
8 SERVICE_USE_PID=1
9
10 start() {
11         . /lib/functions/network.sh
12         config_load dhcrelay
13         local args=""
14
15         local enabled
16         config_get_bool enabled ipv4 enabled 0
17         [ "$enabled" -eq 0 ] && return 0
18
19         # listen interfaces
20         local interfaces
21         local ifname
22         config_get interfaces ipv4 interfaces
23         for net in $interfaces; do
24                 if network_get_device ifname "$net"; then
25                         append args "-i $ifname"
26                 fi
27         done
28
29         # link selection sub-option (RFC3527)
30         local link_selection
31         config_get link_selection ipv4 link_selection
32         if network_get_device ifname "$link_selection"; then
33                 append args "-l $ifname"
34         fi
35
36         # relay mode
37         local relay_mode
38         config_get relay_mode ipv4 relay_mode
39         [ -n "$relay_mode" ] && append args "-m $relay_mode"
40
41         # dhcp server address
42         local server
43         config_get server ipv4 dhcpserver
44         [ -n "$server" ] || return 0
45         append args "$server"
46
47         service_start /usr/sbin/dhcrelay -4 -q \
48                 -pf $SERVICE_PID_FILE $args
49 }
50
51 stop() {
52         service_stop /usr/sbin/dhcrelay
53 }