소스 검색

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 년 전
부모
커밋
d79eeba688
2개의 변경된 파일26개의 추가작업 그리고 6개의 파일을 삭제
  1. 1 1
      package/network/services/odhcpd/Makefile
  2. 25 5
      package/network/services/odhcpd/files/odhcpd.defaults

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

@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 include $(TOPDIR)/rules.mk
 
 
 PKG_NAME:=odhcpd
 PKG_NAME:=odhcpd
-PKG_RELEASE:=1
+PKG_RELEASE:=$(AUTORELEASE)
 
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.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 ..
 json_select ..
 json_select ..
 
 
+ODHCPDONLY=0
+V4MODE=disabled
+V6MODE=disabled
+
+[ -e /usr/sbin/dnsmasq ] || ODHCPDONLY=1
+
 case "$protocol" in
 case "$protocol" in
 # only enable server mode on statically addressed lan ports
 # 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
 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
 uci batch <<EOF
 set dhcp.odhcpd=odhcpd
 set dhcp.odhcpd=odhcpd
-set dhcp.odhcpd.maindhcp=0
+set dhcp.odhcpd.maindhcp=$ODHCPDONLY
 set dhcp.odhcpd.leasefile=/tmp/hosts/odhcpd
 set dhcp.odhcpd.leasefile=/tmp/hosts/odhcpd
 set dhcp.odhcpd.leasetrigger=/usr/sbin/odhcpd-update
 set dhcp.odhcpd.leasetrigger=/usr/sbin/odhcpd-update
 set dhcp.odhcpd.loglevel=4
 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
 set dhcp.lan.ra_slaac=1
 add_list dhcp.lan.ra_flags=managed-config
 add_list dhcp.lan.ra_flags=managed-config
 add_list dhcp.lan.ra_flags=other-config
 add_list dhcp.lan.ra_flags=other-config