Skip to content

Commit

Permalink
dnsmasq: allow using dnsmasq as the sole resolver
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
yousong committed Feb 19, 2019
1 parent d4c999b commit ec2a2a2
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
2 changes: 1 addition & 1 deletion package/network/services/dnsmasq/Makefile
Expand Up @@ -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
Expand Down
30 changes: 15 additions & 15 deletions package/network/services/dnsmasq/files/dnsmasq.init
Expand Up @@ -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
Expand Down Expand Up @@ -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"

Expand Down Expand Up @@ -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
Expand All @@ -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
}
Expand Down

0 comments on commit ec2a2a2

Please sign in to comment.