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