From: <abe...@us...> - 2017-03-28 18:23:03
|
Revision: 8240 http://sourceforge.net/p/astlinux/code/8240 Author: abelbeck Date: 2017-03-28 18:23:01 +0000 (Tue, 28 Mar 2017) Log Message: ----------- dnsmasq, use 'netcalc' to sanitize and calculate the IPv4 address ranges for the DHCP pool. Modified Paths: -------------- branches/1.0/package/dnsmasq/Config.in branches/1.0/package/dnsmasq/dnsmasq.init Removed Paths: ------------- branches/1.0/project/astlinux/target_skeleton/etc/init.d/functions.d/bash/ Modified: branches/1.0/package/dnsmasq/Config.in =================================================================== --- branches/1.0/package/dnsmasq/Config.in 2017-03-28 14:49:35 UTC (rev 8239) +++ branches/1.0/package/dnsmasq/Config.in 2017-03-28 18:23:01 UTC (rev 8240) @@ -1,5 +1,6 @@ config BR2_PACKAGE_DNSMASQ bool "dnsmasq" + select BR2_PACKAGE_NETCALC help A lightweight DNS and DHCP server. It is intended to provide coupled DNS and DHCP service to a LAN. Modified: branches/1.0/package/dnsmasq/dnsmasq.init =================================================================== --- branches/1.0/package/dnsmasq/dnsmasq.init 2017-03-28 14:49:35 UTC (rev 8239) +++ branches/1.0/package/dnsmasq/dnsmasq.init 2017-03-28 18:23:01 UTC (rev 8240) @@ -2,7 +2,6 @@ . /etc/rc.conf -. /etc/init.d/functions.d/bash/ipcalc . /etc/init.d/functions.d/network . /etc/init.d/functions.d/misc @@ -182,25 +181,40 @@ addDNSMASQnet() { # args: IF, IP, NM, tag - local ipbase dstart dend ipstart ipend leasetime NETWORK + local max_hosts range_min range_max ip_min ip_max leasetime if [ -n "$1" -a "$1" != "none" -a -n "$2" -a -n "$3" ]; then leasetime="${DHCP_LEASETIME:-24}h" if isDHCPinterface $1; then - eval $(ipcalc -n "$2" "$3") - ipbase=$(_isdottedquad $NETWORK) - if [ -n "$DHCPRANGE" ]; then - dstart=$(echo $DHCPRANGE | cut -d: -f1) - dend=$(echo $DHCPRANGE | cut -d: -f2) + range_min=$(echo "$DHCPRANGE" | cut -d: -f1) + range_max=$(echo "$DHCPRANGE" | cut -d: -f2) else - dstart=100 - dend=220 + range_min=100 + range_max=220 fi - ipstart=$(($ipbase + $dstart)) - ipend=$(($ipbase + $dend)) - trueDNSMASQnet $4 $2 $(_mkdottedquad $ipstart) $(_mkdottedquad $ipend) $leasetime + max_hosts="$(netcalc "$2" "$3" | sed -n -r -e 's/^Hosts\/Net *: *([0-9]+).*$/\1/p')" + if [ -n "$max_hosts" ]; then + if [ $range_max -gt $max_hosts ]; then + range_max=$(($max_hosts - ($max_hosts / 4) - 1)) + fi + if [ $range_min -ge $range_max ]; then + range_min=$(($range_max - ($max_hosts / 4) - 1)) + fi + if [ $range_min -le 0 ]; then + range_min=$((($max_hosts / 4) + 1)) + fi + if [ $range_max -le $range_min ]; then + range_max=$(($range_min + ($max_hosts / 4) + 1)) + fi + fi + + ip_min="$(netcalc -R "$range_min:$range_max" "$2" "$3" | sed -n -r -e 's/^RangeMin *: *([0-9.]+).*$/\1/p')" + ip_max="$(netcalc -R "$range_min:$range_max" "$2" "$3" | sed -n -r -e 's/^RangeMax *: *([0-9.]+).*$/\1/p')" + + trueDNSMASQnet $4 $2 "$ip_min" "$ip_max" $leasetime + addIPV6net $1 $4 $leasetime else if ! addIPV6net $1 $4 $leasetime; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |