aboutsummaryrefslogtreecommitdiffstats
path: root/package/network
diff options
context:
space:
mode:
authorYousong Zhou <yszhou4tech@gmail.com>2019-02-18 14:11:19 +0000
committerYousong Zhou <yszhou4tech@gmail.com>2019-02-19 13:06:06 +0000
commitec2a2a2aea1ada65f050d74a064e74466bbe4e8d (patch)
treec01b8155634a851d811af3057282cdb397932d0e /package/network
parentd4c999bb891725b71ae38416cc6d5cfa99938ae4 (diff)
downloadupstream-ec2a2a2aea1ada65f050d74a064e74466bbe4e8d.tar.gz
upstream-ec2a2a2aea1ada65f050d74a064e74466bbe4e8d.tar.bz2
upstream-ec2a2a2aea1ada65f050d74a064e74466bbe4e8d.zip
dnsmasq: allow using dnsmasq as the sole resolver
Currently it seems impossible to configure /etc/config/dhcp to achieve the following use case - run dnsmasq with no-resolv - re-generate /etc/resolv.conf with "nameserver 127.0.0.1" Before this change, we have to set resolvfile to /tmp/resolv.conf.auto to achive the 2nd effect above, but setting resolvfile requires noresolv being false. A new boolean option "localuse" is added to indicate that we intend to use dnsmasq as the local dns resolver. It's false by default and to align with old behaviour it will be true automatically if resolvfile is set to /tmp/resolv.conf.auto Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Acked-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'package/network')
-rw-r--r--package/network/services/dnsmasq/Makefile2
-rw-r--r--package/network/services/dnsmasq/files/dnsmasq.init30
2 files changed, 16 insertions, 16 deletions
diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index 59a4f45ca7..d874296ea7 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=dnsmasq
PKG_UPSTREAM_VERSION:=2.80
PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=8
+PKG_RELEASE:=9
PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index f3066627d6..f65736e268 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -731,7 +731,9 @@ dhcp_relay_add() {
dnsmasq_start()
{
- local cfg="$1" disabled resolvfile user_dhcpscript
+ local cfg="$1"
+ local disabled user_dhcpscript
+ local resolvfile localuse
config_get_bool disabled "$cfg" disabled 0
[ "$disabled" -gt 0 ] && return 0
@@ -882,14 +884,14 @@ dnsmasq_start()
config_get_bool cachelocal "$cfg" cachelocal 1
config_get_bool noresolv "$cfg" noresolv 0
+ config_get_bool localuse "$cfg" localuse 0
if [ "$noresolv" != "1" ]; then
- config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
- # So jail doesn't complain if file missing
- [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
+ config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
+ [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
+ xappend "--resolv-file=$resolvfile"
+ [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
fi
- [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
-
config_get hostsfile "$cfg" dhcphostsfile
[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
@@ -1011,7 +1013,7 @@ dnsmasq_start()
mv -f $CONFIGFILE_TMP $CONFIGFILE
mv -f $HOSTFILE_TMP $HOSTFILE
- [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
+ [ "$localuse" -gt 0 ] && {
rm -f /tmp/resolv.conf
[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
echo "search $DOMAIN" >> /tmp/resolv.conf
@@ -1037,17 +1039,15 @@ dnsmasq_start()
dnsmasq_stop()
{
- local cfg="$1" resolvfile
+ local cfg="$1"
+ local noresolv resolvfile localuse
+ config_get_bool noresolv "$cfg" noresolv 0
+ config_get_bool localuse "$cfg" localuse 0
config_get resolvfile "$cfg" "resolvfile"
- #relink /tmp/resolve.conf only for main instance
- [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
- [ -f /tmp/resolv.conf ] && {
- rm -f /tmp/resolv.conf
- ln -s "$resolvfile" /tmp/resolv.conf
- }
- }
+ [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+ [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
}