packages/net/isc-dhcp/files/dhcrelay4.init
Brian J. Murrell 93420826ab dhcrelay4: add support for up/downstream interfaces
dhcrelay has the ability to monitor interfaces for requests
in a single direction only rather than listening to all
interfaces for requests.

Doing this allows one to suppress the duplication of having
the relay forward requests from the same network that the
DHCP server is on.

Signed-off-by: Brian J. Murrell <brian@interlinx.bc.ca>
2018-04-11 22:08:26 -04:00

65 lines
1.4 KiB
Bash

#!/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
}