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