Signed-off-by: Bruno Randolf <b...@einfach.org>
---
 net/isc-dhcp/Makefile              |  6 +++--
 net/isc-dhcp/files/dhcrelay.config | 15 +++++++++++
 net/isc-dhcp/files/dhcrelay.init   | 51 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 70 insertions(+), 2 deletions(-)
 create mode 100644 net/isc-dhcp/files/dhcrelay.config
 create mode 100755 net/isc-dhcp/files/dhcrelay.init

diff --git a/net/isc-dhcp/Makefile b/net/isc-dhcp/Makefile
index 798ee32..d3aa397 100644
--- a/net/isc-dhcp/Makefile
+++ b/net/isc-dhcp/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=isc-dhcp
 UPSTREAM_NAME:=dhcp
 PKG_VERSION:=4.2.4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(UPSTREAM_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=ftp://ftp.isc.org/isc/dhcp/$(PKG_VERSION)
@@ -171,8 +171,10 @@ define Build/Compile
 endef
 
 define Package/isc-dhcp-relay-$(BUILD_VARIANT)/install
-       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhcrelay $(1)/usr/sbin
+       $(INSTALL_BIN) ./files/dhcrelay.init $(1)/etc/init.d/dhcrelay
+       $(INSTALL_BIN) ./files/dhcrelay.config $(1)/etc/config/dhcrelay
 endef
 
 define Package/isc-dhcp-server-$(BUILD_VARIANT)/install
diff --git a/net/isc-dhcp/files/dhcrelay.config 
b/net/isc-dhcp/files/dhcrelay.config
new file mode 100644
index 0000000..a303a60
--- /dev/null
+++ b/net/isc-dhcp/files/dhcrelay.config
@@ -0,0 +1,15 @@
+config 'dhcrelay'
+       option 'enabled' '0'
+
+       # IP address of the server
+       option 'server' ''
+
+       # network interfaces to listen on (e.g. lan or wan)
+       option 'interfaces' ''
+
+       # What to do about packets that already have a relay option:
+       # 'append': Forward and append our own relay option
+       # 'replace': Forward, but replace theirs with ours (default)
+       # 'forward': Forward without changes
+       # 'discard': Don't forward
+       option 'relay_mode' ''
diff --git a/net/isc-dhcp/files/dhcrelay.init b/net/isc-dhcp/files/dhcrelay.init
new file mode 100755
index 0000000..e66d34b
--- /dev/null
+++ b/net/isc-dhcp/files/dhcrelay.init
@@ -0,0 +1,51 @@
+#!/bin/sh /etc/rc.common
+START=75
+
+BIN="/usr/sbin/dhcrelay"
+
+dhcrelay_start() {
+       local cfg="$1"
+       local args=""
+
+       local enabled
+       config_get_bool enabled "$cfg" enabled 0
+       [ "${enabled}" -eq 0 ] && return 0
+
+       # listen interfaces
+       local interfaces
+       config_get interfaces "$cfg" interfaces
+       if [ -n "${interfaces}" ]; then
+               for net in $interfaces; do
+                       local ifname
+                       config_get ifname "$net" ifname
+                       [ -n "$ifname" ] && append args "-i $ifname"
+               done
+       else
+               return 0
+       fi
+
+       # relay mode
+       local relay_mode
+       config_get relay_mode "$cfg" relay_mode
+       [ -n "$relay_mode" ] && append args "-m $relay_mode"
+
+       # dhcp server address
+       local server
+       config_get server "$cfg" server
+       [ -n "${server}" ] || return 0
+       append args "${server}"
+
+       start-stop-daemon -S -x ${BIN} -- -q ${args}
+       return $?
+}
+
+start() {
+       include /lib/network
+       scan_interfaces
+       config_load dhcrelay
+       config_foreach dhcrelay_start dhcrelay
+}
+
+stop() {
+       start-stop-daemon -K -x ${BIN}
+}
-- 
1.8.1.2
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to