d79eeba688
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>
53 lines
1.1 KiB
Bash
53 lines
1.1 KiB
Bash
#!/bin/sh
|
|
uci -q get dhcp.odhcpd && exit 0
|
|
touch /etc/config/dhcp
|
|
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
json_load "$(cat /etc/board.json)"
|
|
json_select network
|
|
json_select lan
|
|
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")
|
|
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=$ODHCPDONLY
|
|
set dhcp.odhcpd.leasefile=/tmp/hosts/odhcpd
|
|
set dhcp.odhcpd.leasetrigger=/usr/sbin/odhcpd-update
|
|
set dhcp.odhcpd.loglevel=4
|
|
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
|
|
commit dhcp
|
|
EOF
|