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