- #!/bin/sh /etc/rc.common
- # Copyright (C) 2012 OpenWrt.org
-
- START=91
-
- SERVICE_SIG="KILL"
- SERVICE_PID_FILE="/var/run/dhcrelay4.pid"
- SERVICE_USE_PID=1
-
- start() {
- . /lib/functions/network.sh
- config_load dhcrelay
- local args=""
-
- local enabled
- config_get_bool enabled ipv4 enabled 0
- [ "$enabled" -eq 0 ] && return 0
-
- # listen interfaces
- local interfaces
- local ifname
- config_get interfaces ipv4 interfaces
- for net in $interfaces; do
- if network_get_device ifname "$net"; then
- append args "-i $ifname"
- fi
- done
- config_get interfaces ipv4 upstream_interfaces
- for net in $interfaces; do
- if network_get_device ifname "$net"; then
- append args "-iu $ifname"
- fi
- done
- config_get interfaces ipv4 downstream_interfaces
- for net in $interfaces; do
- if network_get_device ifname "$net"; then
- append args "-id $ifname"
- fi
- done
-
- # link selection sub-option (RFC3527)
- local link_selection
- config_get link_selection ipv4 link_selection
- if network_get_device ifname "$link_selection"; then
- append args "-U $ifname"
- fi
-
- # relay mode
- local relay_mode
- config_get relay_mode ipv4 relay_mode
- [ -n "$relay_mode" ] && append args "-m $relay_mode"
-
- # dhcp server address
- local server
- config_get server ipv4 dhcpserver
- [ -n "$server" ] || return 0
- append args "$server"
-
- service_start /usr/sbin/dhcrelay -4 -q \
- -pf $SERVICE_PID_FILE $args
- }
-
- stop() {
- service_stop /usr/sbin/dhcrelay
- }
|