dnsmasq: refuse to add empty DHCP range
Use ipcalc's return value to react to invalid range specifications. By simply ignoring the range instead of aborting with an error code, dnsmasq should still start when there's an error (best effort). Aborting the config generation or working with invalid range specs leaves dnsmasq crash-looping which is the right thing to do concerning that particular interface but it also hinders DHCP service on other interfaces and DNS on the router itself. Signed-off-by: Leon M. George <leon@georgemail.eu>
This commit is contained in:
		 Leon M. George
					Leon M. George
				
			
				
					committed by
					
						 Christian Marangi
						Christian Marangi
					
				
			
			
				
	
			
			
			 Christian Marangi
						Christian Marangi
					
				
			
						parent
						
							6ce9f42b98
						
					
				
				
					commit
					e4bd3de1be
				
			| @@ -584,21 +584,20 @@ dhcp_add() { | |||||||
| 		limit=$((limit-1)) | 		limit=$((limit-1)) | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	eval "$(ipcalc.sh "${subnet%%/*}" $netmask $start $limit)" | 	# make sure the DHCP range is not empty | ||||||
|  | 	if [ "$dhcpv4" != "disabled" ] && eval "$(ipcalc.sh "${subnet%%/*}" "$netmask" "$start" "$limit")" ; then | ||||||
|  | 		[ "$dynamicdhcp" = "0" ] && END="static" | ||||||
|  |  | ||||||
|  | 		xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	if [ "$dynamicdhcp" = "0" ] ; then | 	if [ "$dynamicdhcp" = "0" ] ; then | ||||||
| 		END="static" |  | ||||||
| 		dhcp6range="::,static" | 		dhcp6range="::,static" | ||||||
| 	else | 	else | ||||||
| 		dhcp6range="::1000,::ffff" | 		dhcp6range="::1000,::ffff" | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  |  | ||||||
| 	if [ "$dhcpv4" != "disabled" ] ; then |  | ||||||
| 		xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}" |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	if [ $DNSMASQ_DHCP_VER -eq 6 ] && [ "$ra" = "server" ] ; then | 	if [ $DNSMASQ_DHCP_VER -eq 6 ] && [ "$ra" = "server" ] ; then | ||||||
| 		# Note: dnsmasq cannot just be a DHCPv6 server (all-in-1) | 		# Note: dnsmasq cannot just be a DHCPv6 server (all-in-1) | ||||||
| 		# and let some other machine(s) send RA pointing to it. | 		# and let some other machine(s) send RA pointing to it. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user