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