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
PKG_NAME:=odhcpd
PKG_RELEASE:=1
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git

View 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