odhcpd: setup dhcpv4 server automagically
authorDaniel Golle <daniel@makrotopia.org>
Sun, 14 Feb 2021 22:39:24 +0000 (22:39 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 15 Feb 2021 00:34:43 +0000 (00:34 +0000)
Automatically setup dhcpv4 server just like it's done for dhcpv6.
To select whether odhcpd or dnsmasq are serving DHCPv4 requests there
still is the 'maindhcp' option. To make things less confusing, make
sure things really work out-of-the-box in case dnsmasq is not even
installed at the time the uci-defaults script is being run.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
package/network/services/odhcpd/Makefile
package/network/services/odhcpd/files/odhcpd.defaults

index fe3e526ef16ee3eb35e49f4b94c48c7824cd6d41..799a63c23df3e9661c7c1df8107b8e5c3a046c52 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=odhcpd
-PKG_RELEASE:=1
+PKG_RELEASE:=$(AUTORELEASE)
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
index 5a1706f78564cb3b7bee3fdacd42b77180a90e2e..1350636ba4300f4ef69508576597de99c0193c1f 100644 (file)
@@ -11,20 +11,40 @@ json_get_vars protocol
 json_select ..
 json_select ..
 
+ODHCPDONLY=0
+V4MODE=disabled
+V6MODE=disabled
+
+[ -e /usr/sbin/dnsmasq ] || ODHCPDONLY=1
+
 case "$protocol" in
 # only enable server mode on statically addressed lan ports
-"static") [ -e /proc/sys/net/ipv6 ] && MODE=server || MODE=disabled ;;
-*) MODE=disabled ;;
+"static")
+       V4MODE=server
+       [ -e /proc/sys/net/ipv6 ] && V6MODE=server
+       ;;
 esac
 
+uci get dhcp.lan 1>/dev/null 2>/dev/null || {
+uci batch <<EOF
+set dhcp.lan=dhcp
+set dhcp.lan.interface='lan'
+set dhcp.lan.start='100'
+set dhcp.lan.limit='150'
+set dhcp.lan.leasetime='12h'
+set dhcp.lan.domain='lan'
+EOF
+}
+
 uci batch <<EOF
 set dhcp.odhcpd=odhcpd
-set dhcp.odhcpd.maindhcp=0
+set dhcp.odhcpd.maindhcp=$ODHCPDONLY
 set dhcp.odhcpd.leasefile=/tmp/hosts/odhcpd
 set dhcp.odhcpd.leasetrigger=/usr/sbin/odhcpd-update
 set dhcp.odhcpd.loglevel=4
-set dhcp.lan.dhcpv6=$MODE
-set dhcp.lan.ra=$MODE
+set dhcp.lan.dhcpv4=$V4MODE
+set dhcp.lan.dhcpv6=$V6MODE
+set dhcp.lan.ra=$V6MODE
 set dhcp.lan.ra_slaac=1
 add_list dhcp.lan.ra_flags=managed-config
 add_list dhcp.lan.ra_flags=other-config