Browse Source

odhcpd: setup dhcpv4 server automagically

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 <[email protected]>
Daniel Golle 4 years ago
parent
commit
d79eeba688

+ 1 - 1
package/network/services/odhcpd/Makefile

@@ -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

+ 25 - 5
package/network/services/odhcpd/files/odhcpd.defaults

@@ -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