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 <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2021-02-14 22:39:24 +00:00
parent 304df2836a
commit d79eeba688
No known key found for this signature in database
GPG Key ID: 5A8F39C31C3217CA
2 changed files with 26 additions and 6 deletions

View File

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

View File

@ -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 ;; "static")
*) MODE=disabled ;; 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.dhcpv4=$V4MODE
set dhcp.lan.ra=$MODE 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