| #!/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 |