mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-08 16:11:30 +00:00
Compare commits
17
Commits
v2.87test2
...
v2.87test4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72fac0810c | ||
|
|
c166c07a93 | ||
|
|
39a625ff72 | ||
|
|
ad32ca18a7 | ||
|
|
efea282396 | ||
|
|
33d6a01cd3 | ||
|
|
d290630d31 | ||
|
|
d2ad5dc073 | ||
|
|
68ab5127af | ||
|
|
089a11f340 | ||
|
|
de1d04eb66 | ||
|
|
ed4e7defd7 | ||
|
|
267ab619c4 | ||
|
|
0140454ba2 | ||
|
|
2c60441239 | ||
|
|
cbbd56c965 | ||
|
|
2561f9fe0e |
No files matched your search
@@ -70,8 +70,9 @@ nettle_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CO
|
|||||||
HAVE_NETTLEHASH $(PKG_CONFIG) --libs nettle`
|
HAVE_NETTLEHASH $(PKG_CONFIG) --libs nettle`
|
||||||
gmp_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC NO_GMP --copy -lgmp`
|
gmp_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC NO_GMP --copy -lgmp`
|
||||||
sunos_libs = `if uname | grep SunOS >/dev/null 2>&1; then echo -lsocket -lnsl -lposix4; fi`
|
sunos_libs = `if uname | grep SunOS >/dev/null 2>&1; then echo -lsocket -lnsl -lposix4; fi`
|
||||||
nft_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_NFTSET $(PKG_CONFIG) --libs libnftables`
|
nft_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_NFTSET $(PKG_CONFIG) --cflags libnftables`
|
||||||
version = -DVERSION='\"`$(top)/bld/get-version $(top)`\"'
|
nft_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_NFTSET $(PKG_CONFIG) --libs libnftables`
|
||||||
|
version = -DVERSION='\"`$(top)/bld/get-version $(top)`\"'
|
||||||
|
|
||||||
sum?=$(shell $(CC) -DDNSMASQ_COMPILE_OPTS $(COPTS) -E $(top)/$(SRC)/dnsmasq.h | ( md5sum 2>/dev/null || md5 ) | cut -f 1 -d ' ')
|
sum?=$(shell $(CC) -DDNSMASQ_COMPILE_OPTS $(COPTS) -E $(top)/$(SRC)/dnsmasq.h | ( md5sum 2>/dev/null || md5 ) | cut -f 1 -d ' ')
|
||||||
sum!=$(CC) -DDNSMASQ_COMPILE_OPTS $(COPTS) -E $(top)/$(SRC)/dnsmasq.h | ( md5sum 2>/dev/null || md5 ) | cut -f 1 -d ' '
|
sum!=$(CC) -DDNSMASQ_COMPILE_OPTS $(COPTS) -E $(top)/$(SRC)/dnsmasq.h | ( md5sum 2>/dev/null || md5 ) | cut -f 1 -d ' '
|
||||||
@@ -91,7 +92,7 @@ hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \
|
|||||||
all : $(BUILDDIR)
|
all : $(BUILDDIR)
|
||||||
@cd $(BUILDDIR) && $(MAKE) \
|
@cd $(BUILDDIR) && $(MAKE) \
|
||||||
top="$(top)" \
|
top="$(top)" \
|
||||||
build_cflags="$(version) $(dbus_cflags) $(idn2_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags)" \
|
build_cflags="$(version) $(dbus_cflags) $(idn2_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags) $(nft_cflags)" \
|
||||||
build_libs="$(dbus_libs) $(idn2_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs) $(ubus_libs) $(nft_libs)" \
|
build_libs="$(dbus_libs) $(idn2_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs) $(ubus_libs) $(nft_libs)" \
|
||||||
-f $(top)/Makefile dnsmasq
|
-f $(top)/Makefile dnsmasq
|
||||||
|
|
||||||
@@ -116,7 +117,7 @@ all-i18n : $(BUILDDIR)
|
|||||||
@cd $(BUILDDIR) && $(MAKE) \
|
@cd $(BUILDDIR) && $(MAKE) \
|
||||||
top="$(top)" \
|
top="$(top)" \
|
||||||
i18n=-DLOCALEDIR=\'\"$(LOCALEDIR)\"\' \
|
i18n=-DLOCALEDIR=\'\"$(LOCALEDIR)\"\' \
|
||||||
build_cflags="$(version) $(dbus_cflags) $(idn2_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags)" \
|
build_cflags="$(version) $(dbus_cflags) $(idn2_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags) $(nft_cflags)" \
|
||||||
build_libs="$(dbus_libs) $(idn2_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs) $(ubus_libs) $(nft_libs)" \
|
build_libs="$(dbus_libs) $(idn2_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs) $(ubus_libs) $(nft_libs)" \
|
||||||
-f $(top)/Makefile dnsmasq
|
-f $(top)/Makefile dnsmasq
|
||||||
for f in `cd $(PO); echo *.po`; do \
|
for f in `cd $(PO); echo *.po`; do \
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
This packaging is now unmaintained in the dnsmasq source: dnsmasq is
|
|
||||||
included in Suse proper, and up-to-date packages are now available
|
|
||||||
from
|
|
||||||
|
|
||||||
ftp://ftp.suse.com/pub/people/ug/
|
|
||||||
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
This is a patch against SuSEfirewall2-3.1-206 (SuSE 9.x and older)
|
|
||||||
It fixes the dependency from the dns daemon name 'named'
|
|
||||||
After appending the patch, the SuSEfirewall is again able to autodetect
|
|
||||||
the dnsmasq named service.
|
|
||||||
This is a very old bug in the SuSEfirewall script.
|
|
||||||
The SuSE people think the name of the dns server will always 'named'
|
|
||||||
|
|
||||||
|
|
||||||
--- /sbin/SuSEfirewall2.orig 2004-01-23 13:30:09.000000000 +0100
|
|
||||||
+++ /sbin/SuSEfirewall2 2004-01-23 13:31:56.000000000 +0100
|
|
||||||
@@ -764,7 +764,7 @@
|
|
||||||
echo 'FW_ALLOW_INCOMING_HIGHPORTS_UDP should be set to yes, if you are running a DNS server!'
|
|
||||||
|
|
||||||
test "$FW_SERVICE_AUTODETECT" = yes -o "$FW_SERVICE_AUTODETECT" = dmz -o "$FW_SERVICE_AUTODETECT" = ext && {
|
|
||||||
- test "$FW_SERVICE_DNS" = no -a '!' "$START_NAMED" = no && check_srv named && {
|
|
||||||
+ test "$FW_SERVICE_DNS" = no -a '!' "$START_NAMED" = no && check_srv dnsmasq && {
|
|
||||||
echo -e 'Warning: detected activated named, enabling FW_SERVICE_DNS!
|
|
||||||
You still have to allow tcp/udp port 53 on internal, dmz and/or external.'
|
|
||||||
FW_SERVICE_DNS=$FW_SERVICE_AUTODETECT
|
|
||||||
@@ -878,7 +878,7 @@
|
|
||||||
test -e /etc/resolv.conf || echo "Warning: /etc/resolv.conf not found"
|
|
||||||
# Get ports/IP bindings of NAMED/SQUID
|
|
||||||
test "$FW_SERVICE_DNS" = yes -o "$FW_SERVICE_DNS" = dmz -o "$FW_SERVICE_DNS" = ext -o "$START_NAMED" = yes && DNS_PORT=`$LSOF -i -n -P | \
|
|
||||||
- $AWK -F: '/^named .* UDP / {print $2}'| $GREP -vw 53 | $SORT -un`
|
|
||||||
+ $AWK -F: '/^dnsmasq .* UDP / {print $2}'| $GREP -vw 53 | $SORT -un`
|
|
||||||
test "$FW_SERVICE_SQUID" = yes -o "$FW_SERVICE_SQUID" = dmz -o "$FW_SERVICE_SQUID" = ext -o "$START_SQUID" = yes && SQUID_PORT=`$LSOF -i -n -P | \
|
|
||||||
$AWK -F: '/^squid .* UDP/ {print $2}'| $SORT -un`
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
--- man/dnsmasq.8 2004-08-08 20:57:56.000000000 +0200
|
|
||||||
+++ man/dnsmasq.8 2004-08-12 00:40:01.000000000 +0200
|
|
||||||
@@ -69,7 +69,7 @@
|
|
||||||
.TP
|
|
||||||
.B \-g, --group=<groupname>
|
|
||||||
Specify the group which dnsmasq will run
|
|
||||||
-as. The defaults to "dip", if available, to facilitate access to
|
|
||||||
+as. The defaults to "dialout", if available, to facilitate access to
|
|
||||||
/etc/ppp/resolv.conf which is not normally world readable.
|
|
||||||
.TP
|
|
||||||
.B \-v, --version
|
|
||||||
--- src/config.h 2004-08-11 11:39:18.000000000 +0200
|
|
||||||
+++ src/config.h 2004-08-12 00:40:01.000000000 +0200
|
|
||||||
@@ -44,7 +44,7 @@
|
|
||||||
#endif
|
|
||||||
#define DEFLEASE 3600 /* default lease time, 1 hour */
|
|
||||||
#define CHUSER "nobody"
|
|
||||||
-#define CHGRP "dip"
|
|
||||||
+#define CHGRP "dialout"
|
|
||||||
#define DHCP_SERVER_PORT 67
|
|
||||||
#define DHCP_CLIENT_PORT 68
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# General
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Name: dnsmasq
|
|
||||||
Version: 2.33
|
|
||||||
Release: 1
|
|
||||||
Copyright: GPL
|
|
||||||
Group: Productivity/Networking/DNS/Servers
|
|
||||||
Vendor: Simon Kelley
|
|
||||||
Packager: Simon Kelley
|
|
||||||
URL: http://www.thekelleys.org.uk/dnsmasq
|
|
||||||
Provides: dns_daemon
|
|
||||||
Conflicts: bind bind8 bind9
|
|
||||||
PreReq: %fillup_prereq %insserv_prereq
|
|
||||||
Autoreqprov: on
|
|
||||||
Source0: %{name}-%{version}.tar.bz2
|
|
||||||
BuildRoot: /var/tmp/%{name}-%{version}
|
|
||||||
Summary: A lightweight caching nameserver
|
|
||||||
|
|
||||||
%description
|
|
||||||
Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server. It
|
|
||||||
is designed to provide DNS and, optionally, DHCP, to a small network. It can
|
|
||||||
serve the names of local machines which are not in the global DNS. The DHCP
|
|
||||||
server integrates with the DNS server and allows machines with DHCP-allocated
|
|
||||||
addresses to appear in the DNS with names configured either in each host or
|
|
||||||
in a central configuration file. Dnsmasq supports static and dynamic DHCP
|
|
||||||
leases and BOOTP for network booting of diskless machines.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Build
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -q
|
|
||||||
patch -p0 <rpm/%{name}-SuSE.patch
|
|
||||||
|
|
||||||
%build
|
|
||||||
%{?suse_update_config:%{suse_update_config -f}}
|
|
||||||
make all-i18n DESTDIR=$RPM_BUILD_ROOT PREFIX=/usr
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Install
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%install
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
mkdir -p ${RPM_BUILD_ROOT}/etc/init.d
|
|
||||||
make install-i18n DESTDIR=$RPM_BUILD_ROOT PREFIX=/usr
|
|
||||||
install -o root -g root -m 755 rpm/rc.dnsmasq-suse $RPM_BUILD_ROOT/etc/init.d/dnsmasq
|
|
||||||
install -o root -g root -m 644 dnsmasq.conf.example $RPM_BUILD_ROOT/etc/dnsmasq.conf
|
|
||||||
strip $RPM_BUILD_ROOT/usr/sbin/dnsmasq
|
|
||||||
ln -sf ../../etc/init.d/dnsmasq $RPM_BUILD_ROOT/usr/sbin/rcdnsmasq
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Clean up
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Post-install scriptlet
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%post
|
|
||||||
%{fillup_and_insserv dnsmasq}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Post-uninstall scriptlet
|
|
||||||
#
|
|
||||||
# The %postun script executes after the package has been removed. It is the
|
|
||||||
# last chance for a package to clean up after itself.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%postun
|
|
||||||
%{insserv_cleanup}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# File list
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root)
|
|
||||||
%doc CHANGELOG COPYING FAQ doc.html setup.html UPGRADING_to_2.0 rpm/README.susefirewall
|
|
||||||
%doc contrib
|
|
||||||
%config /etc/init.d/dnsmasq
|
|
||||||
%config /etc/dnsmasq.conf
|
|
||||||
/usr/sbin/rcdnsmasq
|
|
||||||
/usr/sbin/dnsmasq
|
|
||||||
/usr/share/locale/*/LC_MESSAGES/*
|
|
||||||
%doc %{_mandir}/man8/dnsmasq.8.gz
|
|
||||||
%doc %{_mandir}/*/man8/dnsmasq.8.gz
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# init.d/dnsmasq
|
|
||||||
#
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: dnsmasq
|
|
||||||
# Required-Start: $network $remote_fs $syslog
|
|
||||||
# Required-Stop:
|
|
||||||
# Default-Start: 3 5
|
|
||||||
# Default-Stop:
|
|
||||||
# Description: Starts internet name service masq caching server (DNS)
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
NAMED_BIN=/usr/sbin/dnsmasq
|
|
||||||
NAMED_PID=/var/run/dnsmasq.pid
|
|
||||||
NAMED_CONF=/etc/dnsmasq.conf
|
|
||||||
|
|
||||||
if [ ! -x $NAMED_BIN ] ; then
|
|
||||||
echo -n "dnsmasq not installed ! "
|
|
||||||
exit 5
|
|
||||||
fi
|
|
||||||
|
|
||||||
. /etc/rc.status
|
|
||||||
rc_reset
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
echo -n "Starting name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
if [ $? -eq 0 ] ; then
|
|
||||||
echo -n "- Warning: dnsmasq already running ! "
|
|
||||||
else
|
|
||||||
[ -e $NAMED_PID ] && echo -n "- Warning: $NAMED_PID exists ! "
|
|
||||||
fi
|
|
||||||
startproc -p $NAMED_PID $NAMED_BIN -u nobody
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
echo -n "Shutting name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
[ $? -ne 0 ] && echo -n "- Warning: dnsmasq not running ! "
|
|
||||||
killproc -p $NAMED_PID -TERM $NAMED_BIN
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
try-restart)
|
|
||||||
$0 stop && $0 start
|
|
||||||
rc_status
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
$0 stop
|
|
||||||
$0 start
|
|
||||||
rc_status
|
|
||||||
;;
|
|
||||||
force-reload)
|
|
||||||
$0 reload
|
|
||||||
rc_status
|
|
||||||
;;
|
|
||||||
reload)
|
|
||||||
echo -n "Reloading name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
[ $? -ne 0 ] && echo -n "- Warning: dnsmasq not running ! "
|
|
||||||
killproc -p $NAMED_PID -HUP $NAMED_BIN
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
echo -n "Checking for name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
probe)
|
|
||||||
test $NAMED_CONF -nt $NAMED_PID && echo reload
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
rc_exit
|
|
||||||
|
|
||||||
Vendored
+1
@@ -1,6 +1,7 @@
|
|||||||
dnsmasq (2.87-1) unstable; urgency=low
|
dnsmasq (2.87-1) unstable; urgency=low
|
||||||
|
|
||||||
* New upstream.
|
* New upstream.
|
||||||
|
* Include new NFTset support in the build.
|
||||||
|
|
||||||
-- Simon Kelley <simon@thekelleys.org.uk> Wed, 08 Sep 2021 23:11:25 +0000
|
-- Simon Kelley <simon@thekelleys.org.uk> Wed, 08 Sep 2021 23:11:25 +0000
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -5,7 +5,7 @@ Build-depends: gettext, libnetfilter-conntrack-dev [linux-any],
|
|||||||
libidn2-dev, libdbus-1-dev (>=0.61), libgmp-dev,
|
libidn2-dev, libdbus-1-dev (>=0.61), libgmp-dev,
|
||||||
nettle-dev (>=2.4-3), libbsd-dev [kfreebsd-any],
|
nettle-dev (>=2.4-3), libbsd-dev [kfreebsd-any],
|
||||||
liblua5.2-dev, dh-runit, debhelper-compat (= 10),
|
liblua5.2-dev, dh-runit, debhelper-compat (= 10),
|
||||||
pkg-config
|
pkg-config, libnftables-dev
|
||||||
Maintainer: Simon Kelley <simon@thekelleys.org.uk>
|
Maintainer: Simon Kelley <simon@thekelleys.org.uk>
|
||||||
Homepage: http://www.thekelleys.org.uk/dnsmasq/doc.html
|
Homepage: http://www.thekelleys.org.uk/dnsmasq/doc.html
|
||||||
Vcs-Git: http://thekelleys.org.uk/git/dnsmasq.git
|
Vcs-Git: http://thekelleys.org.uk/git/dnsmasq.git
|
||||||
|
|||||||
Vendored
+1
@@ -60,6 +60,7 @@ Notes on configuring dnsmasq as packaged for Debian.
|
|||||||
nodbus : omit DBus support.
|
nodbus : omit DBus support.
|
||||||
noconntrack : omit connection tracking support.
|
noconntrack : omit connection tracking support.
|
||||||
noipset : omit IPset support.
|
noipset : omit IPset support.
|
||||||
|
nonftset : omit nftset support.
|
||||||
nortc : compile alternate mode suitable for systems without an RTC.
|
nortc : compile alternate mode suitable for systems without an RTC.
|
||||||
noi18n : omit translations and internationalisation support.
|
noi18n : omit translations and internationalisation support.
|
||||||
noidn : omit international domain name support, must be
|
noidn : omit international domain name support, must be
|
||||||
|
|||||||
Vendored
+4
@@ -52,6 +52,10 @@ ifeq (,$(filter noidn, $(DEB_BUILD_OPTIONS)))
|
|||||||
DEB_COPTS += -DHAVE_LIBIDN2
|
DEB_COPTS += -DHAVE_LIBIDN2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq (,$(filter nonftset, $(DEB_BUILD_OPTIONS)))
|
||||||
|
DEB_COPTS += -DHAVE_NFTSET
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq (,$(filter noconntrack,$(DEB_BUILD_OPTIONS)))
|
ifeq (,$(filter noconntrack,$(DEB_BUILD_OPTIONS)))
|
||||||
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
||||||
DEB_COPTS += -DHAVE_CONNTRACK
|
DEB_COPTS += -DHAVE_CONNTRACK
|
||||||
|
|||||||
+1
-3
@@ -518,9 +518,7 @@ Allowed prefix lengths are 1-32 (IPv4) and 1-128 (IPv6). If the prefix length is
|
|||||||
Specify an IP address to return for any host in the given domains.
|
Specify an IP address to return for any host in the given domains.
|
||||||
Queries in the domains are never forwarded and always replied to
|
Queries in the domains are never forwarded and always replied to
|
||||||
with the specified IP address which may be IPv4 or IPv6. To give
|
with the specified IP address which may be IPv4 or IPv6. To give
|
||||||
both IPv4 and IPv6 addresses for a domain, use repeated \fB--address\fP flags.
|
multiple addresses or both IPv4 and IPv6 addresses for a domain, use repeated \fB--address\fP flags.
|
||||||
To include multiple IP addresses for a single query, use
|
|
||||||
\fB--addn-hosts=<path>\fP instead.
|
|
||||||
Note that /etc/hosts and DHCP leases override this for individual
|
Note that /etc/hosts and DHCP leases override this for individual
|
||||||
names. A common use of this is to redirect the entire doubleclick.net
|
names. A common use of this is to redirect the entire doubleclick.net
|
||||||
domain to some friendly local web server to avoid banner ads. The
|
domain to some friendly local web server to avoid banner ads. The
|
||||||
|
|||||||
+13
-1
@@ -17,8 +17,13 @@
|
|||||||
/* Declare static char *compiler_opts in config.h */
|
/* Declare static char *compiler_opts in config.h */
|
||||||
#define DNSMASQ_COMPILE_OPTS
|
#define DNSMASQ_COMPILE_OPTS
|
||||||
|
|
||||||
|
/* dnsmasq.h has to be included first as it sources config.h */
|
||||||
#include "dnsmasq.h"
|
#include "dnsmasq.h"
|
||||||
|
|
||||||
|
#if defined(HAVE_IDN) || defined(HAVE_LIBIDN2) || defined(LOCALEDIR)
|
||||||
|
#include <locale.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
struct daemon *daemon;
|
struct daemon *daemon;
|
||||||
|
|
||||||
static volatile pid_t pid = 0;
|
static volatile pid_t pid = 0;
|
||||||
@@ -69,8 +74,10 @@ int main (int argc, char **argv)
|
|||||||
int tftp_prefix_missing = 0;
|
int tftp_prefix_missing = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LOCALEDIR
|
#if defined(HAVE_IDN) || defined(HAVE_LIBIDN2) || defined(LOCALEDIR)
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
|
#endif
|
||||||
|
#ifdef LOCALEDIR
|
||||||
bindtextdomain("dnsmasq", LOCALEDIR);
|
bindtextdomain("dnsmasq", LOCALEDIR);
|
||||||
textdomain("dnsmasq");
|
textdomain("dnsmasq");
|
||||||
#endif
|
#endif
|
||||||
@@ -1682,6 +1689,11 @@ static void poll_resolv(int force, int do_reload, time_t now)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* If we're delaying things, we don't call check_servers(), but
|
||||||
|
reload_servers() may have deleted some servers, rendering the server_array
|
||||||
|
invalid, so just rebuild that here. Once reload_servers() succeeds,
|
||||||
|
we call check_servers() above, which calls build_server_array itself. */
|
||||||
|
build_server_array();
|
||||||
latest->mtime = 0;
|
latest->mtime = 0;
|
||||||
if (!warned)
|
if (!warned)
|
||||||
{
|
{
|
||||||
|
|||||||
+4
-1
@@ -1173,9 +1173,12 @@ extern struct daemon {
|
|||||||
char *packet; /* packet buffer */
|
char *packet; /* packet buffer */
|
||||||
int packet_buff_sz; /* size of above */
|
int packet_buff_sz; /* size of above */
|
||||||
char *namebuff; /* MAXDNAME size buffer */
|
char *namebuff; /* MAXDNAME size buffer */
|
||||||
|
#if (defined(HAVE_CONNTRACK) && defined(HAVE_UBUS)) || defined(HAVE_DNSSEC)
|
||||||
|
/* CONNTRACK UBUS code uses this buffer, as well as DNSSEC code. */
|
||||||
|
char *workspacename;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_DNSSEC
|
#ifdef HAVE_DNSSEC
|
||||||
char *keyname; /* MAXDNAME size buffer */
|
char *keyname; /* MAXDNAME size buffer */
|
||||||
char *workspacename; /* ditto */
|
|
||||||
unsigned long *rr_status; /* ceiling in TTL from DNSSEC or zero for insecure */
|
unsigned long *rr_status; /* ceiling in TTL from DNSSEC or zero for insecure */
|
||||||
int rr_status_sz;
|
int rr_status_sz;
|
||||||
int dnssec_no_time_check;
|
int dnssec_no_time_check;
|
||||||
|
|||||||
+7
-7
@@ -395,7 +395,7 @@ int is_local_answer(time_t now, int first, char *name)
|
|||||||
|
|
||||||
size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header *header, char *name, char *limit, int first, int last, int ede)
|
size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header *header, char *name, char *limit, int first, int last, int ede)
|
||||||
{
|
{
|
||||||
int trunc = 0;
|
int trunc = 0, anscount = 0;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
int start;
|
int start;
|
||||||
union all_addr addr;
|
union all_addr addr;
|
||||||
@@ -418,9 +418,8 @@ size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header
|
|||||||
else
|
else
|
||||||
addr.addr4 = srv->addr;
|
addr.addr4 = srv->addr;
|
||||||
|
|
||||||
header->ancount = htons(ntohs(header->ancount) + 1);
|
if (add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_A, C_IN, "4", &addr))
|
||||||
if (!add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_A, C_IN, "4", &addr))
|
anscount++;
|
||||||
return 0;
|
|
||||||
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV6, name, (union all_addr *)&addr, NULL, 0);
|
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV6, name, (union all_addr *)&addr, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -434,13 +433,14 @@ size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header
|
|||||||
else
|
else
|
||||||
addr.addr6 = srv->addr;
|
addr.addr6 = srv->addr;
|
||||||
|
|
||||||
header->ancount = htons(ntohs(header->ancount) + 1);
|
if (add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_AAAA, C_IN, "6", &addr))
|
||||||
add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_AAAA, C_IN, "6", &addr);
|
anscount++;
|
||||||
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV4, name, (union all_addr *)&addr, NULL, 0);
|
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV4, name, (union all_addr *)&addr, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trunc)
|
if (trunc)
|
||||||
header->hb3 |= HB3_TC;
|
header->hb3 |= HB3_TC;
|
||||||
|
header->ancount = htons(anscount);
|
||||||
|
|
||||||
return p - (unsigned char *)header;
|
return p - (unsigned char *)header;
|
||||||
}
|
}
|
||||||
@@ -630,7 +630,7 @@ int add_update_server(int flags,
|
|||||||
/* See if there is a suitable candidate, and unmark
|
/* See if there is a suitable candidate, and unmark
|
||||||
only do this for forwarding servers, not
|
only do this for forwarding servers, not
|
||||||
address or local, to avoid delays on large numbers. */
|
address or local, to avoid delays on large numbers. */
|
||||||
if (flags & SERV_IS_LOCAL)
|
if (!(flags & SERV_IS_LOCAL))
|
||||||
for (serv = daemon->servers; serv; serv = serv->next)
|
for (serv = daemon->servers; serv; serv = serv->next)
|
||||||
if ((serv->flags & SERV_MARK) &&
|
if ((serv->flags & SERV_MARK) &&
|
||||||
hostname_isequal(alloc_domain, serv->domain))
|
hostname_isequal(alloc_domain, serv->domain))
|
||||||
|
|||||||
+16
-4
@@ -173,7 +173,7 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
|
|||||||
unsigned int gotname = extract_request(header, plen, daemon->namebuff, NULL);
|
unsigned int gotname = extract_request(header, plen, daemon->namebuff, NULL);
|
||||||
void *hash = hash_questions(header, plen, daemon->namebuff);
|
void *hash = hash_questions(header, plen, daemon->namebuff);
|
||||||
unsigned char *oph = find_pseudoheader(header, plen, NULL, NULL, NULL, NULL);
|
unsigned char *oph = find_pseudoheader(header, plen, NULL, NULL, NULL, NULL);
|
||||||
int old_src = 0;
|
int old_src = 0, old_reply = 0;
|
||||||
int first, last, start = 0;
|
int first, last, start = 0;
|
||||||
int subnet, cacheable, forwarded = 0;
|
int subnet, cacheable, forwarded = 0;
|
||||||
size_t edns0_len;
|
size_t edns0_len;
|
||||||
@@ -199,7 +199,10 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
|
|||||||
Similarly FREC_NO_CACHE is never set in flags, so a query which is
|
Similarly FREC_NO_CACHE is never set in flags, so a query which is
|
||||||
contigent on a particular source address EDNS0 option will never be matched. */
|
contigent on a particular source address EDNS0 option will never be matched. */
|
||||||
if (forward)
|
if (forward)
|
||||||
old_src = 1;
|
{
|
||||||
|
old_src = 1;
|
||||||
|
old_reply = 1;
|
||||||
|
}
|
||||||
else if ((forward = lookup_frec_by_query(hash, fwd_flags,
|
else if ((forward = lookup_frec_by_query(hash, fwd_flags,
|
||||||
FREC_CHECKING_DISABLED | FREC_AD_QUESTION | FREC_DO_QUESTION |
|
FREC_CHECKING_DISABLED | FREC_AD_QUESTION | FREC_DO_QUESTION |
|
||||||
FREC_HAS_PHEADER | FREC_DNSKEY_QUERY | FREC_DS_QUERY | FREC_NO_CACHE)))
|
FREC_HAS_PHEADER | FREC_DNSKEY_QUERY | FREC_DS_QUERY | FREC_NO_CACHE)))
|
||||||
@@ -376,9 +379,18 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
|
|||||||
/* In strict order mode, there must be a server later in the list
|
/* In strict order mode, there must be a server later in the list
|
||||||
left to send to, otherwise without the forwardall mechanism,
|
left to send to, otherwise without the forwardall mechanism,
|
||||||
code further on will cycle around the list forwever if they
|
code further on will cycle around the list forwever if they
|
||||||
all return REFUSED. If at the last, give up. */
|
all return REFUSED. If at the last, give up.
|
||||||
|
Note that we can get here EITHER because a client retried,
|
||||||
|
or an upstream server returned REFUSED. The above only
|
||||||
|
applied in the later case. For client retries,
|
||||||
|
keep tyring the last server.. */
|
||||||
if (++start == last)
|
if (++start == last)
|
||||||
goto reply;
|
{
|
||||||
|
if (old_reply)
|
||||||
|
goto reply;
|
||||||
|
else
|
||||||
|
start--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-16
@@ -964,12 +964,8 @@ static char *domain_rev4(int from_file, char *server, struct in_addr *addr4, int
|
|||||||
if (size > 32 || size < 1)
|
if (size > 32 || size < 1)
|
||||||
return _("bad IPv4 prefix length");
|
return _("bad IPv4 prefix length");
|
||||||
|
|
||||||
for (i = 0; i < addrbytes; i++)
|
/* Zero out last address bits according to CIDR mask */
|
||||||
if (((u8 *)addr4)[3-i] != 0)
|
((u8 *)addr4)[3-addrbytes] &= ~((1 << addrbits)-1);
|
||||||
break;
|
|
||||||
|
|
||||||
if (i != addrbytes || (((u8 *)addr4)[3-addrbytes] & ((1 << addrbits) - 1)) != 0)
|
|
||||||
return _("address part not zero");
|
|
||||||
|
|
||||||
size = size & ~0x7;
|
size = size & ~0x7;
|
||||||
|
|
||||||
@@ -1027,12 +1023,8 @@ static char *domain_rev6(int from_file, char *server, struct in6_addr *addr6, in
|
|||||||
if (size > 128 || size < 1)
|
if (size > 128 || size < 1)
|
||||||
return _("bad IPv6 prefix length");
|
return _("bad IPv6 prefix length");
|
||||||
|
|
||||||
for (i = 0; i < addrbytes; i++)
|
/* Zero out last address bits according to CIDR mask */
|
||||||
if (addr6->s6_addr[15-i] != 0)
|
addr6->s6_addr[15-addrbytes] &= ~((1 << addrbits) - 1);
|
||||||
break;
|
|
||||||
|
|
||||||
if (i != addrbytes || (addr6->s6_addr[15-addrbytes] & ((1 << addrbits) - 1)) != 0)
|
|
||||||
return _("address part not zero");
|
|
||||||
|
|
||||||
size = size & ~0x3;
|
size = size & ~0x3;
|
||||||
|
|
||||||
@@ -2235,8 +2227,10 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
comma = split(arg);
|
comma = split(arg);
|
||||||
|
|
||||||
new = opt_malloc(sizeof(struct auth_zone));
|
new = opt_malloc(sizeof(struct auth_zone));
|
||||||
new->domain = opt_string_alloc(arg);
|
new->domain = canonicalise_opt(arg);
|
||||||
new->subnet = NULL;
|
if (!new->domain)
|
||||||
|
ret_err_free(_("invalid auth-zone"), new);
|
||||||
|
new->subnet = NULL;
|
||||||
new->exclude = NULL;
|
new->exclude = NULL;
|
||||||
new->interface_names = NULL;
|
new->interface_names = NULL;
|
||||||
new->next = daemon->auth_zones;
|
new->next = daemon->auth_zones;
|
||||||
@@ -2766,7 +2760,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
|
|
||||||
if (!arg || !*arg)
|
if (!arg || !*arg)
|
||||||
flags = SERV_LITERAL_ADDRESS;
|
flags = SERV_LITERAL_ADDRESS;
|
||||||
else if (option != 'S')
|
else if (option == 'A')
|
||||||
{
|
{
|
||||||
/* # as literal address means return zero address for 4 and 6 */
|
/* # as literal address means return zero address for 4 and 6 */
|
||||||
if (strcmp(arg, "#") == 0)
|
if (strcmp(arg, "#") == 0)
|
||||||
@@ -2798,7 +2792,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
flags &= ~SERV_FOR_NODOTS;
|
flags &= ~SERV_FOR_NODOTS;
|
||||||
|
|
||||||
/* address=/#/ matches the same as without domain */
|
/* address=/#/ matches the same as without domain */
|
||||||
if (option != 'S' && domain[0] == '#' && domain[1] == 0)
|
if (option == 'A' && domain[0] == '#' && domain[1] == 0)
|
||||||
domain[0] = 0;
|
domain[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-7
@@ -233,8 +233,6 @@ char *canonicalise(char *in, int *nomem)
|
|||||||
{
|
{
|
||||||
# ifdef HAVE_LIBIDN2
|
# ifdef HAVE_LIBIDN2
|
||||||
rc = idn2_to_ascii_lz(in, &ret, IDN2_NONTRANSITIONAL);
|
rc = idn2_to_ascii_lz(in, &ret, IDN2_NONTRANSITIONAL);
|
||||||
if (rc == IDN2_DISALLOWED)
|
|
||||||
rc = idn2_to_ascii_lz(in, &ret, IDN2_TRANSITIONAL);
|
|
||||||
# else
|
# else
|
||||||
rc = idna_to_ascii_lz(in, &ret, 0);
|
rc = idna_to_ascii_lz(in, &ret, 0);
|
||||||
# endif
|
# endif
|
||||||
@@ -430,13 +428,12 @@ int hostname_issubdomain(char *a, char *b)
|
|||||||
time_t dnsmasq_time(void)
|
time_t dnsmasq_time(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_BROKEN_RTC
|
#ifdef HAVE_BROKEN_RTC
|
||||||
struct tms dummy;
|
struct timespec ts;
|
||||||
static long tps = 0;
|
|
||||||
|
|
||||||
if (tps == 0)
|
if (clock_gettime(CLOCK_MONOTONIC, &ts) < 0)
|
||||||
tps = sysconf(_SC_CLK_TCK);
|
die(_("cannot read monotonic clock: %s"), NULL, EC_MISC);
|
||||||
|
|
||||||
return (time_t)(times(&dummy)/tps);
|
return ts.tv_sec;
|
||||||
#else
|
#else
|
||||||
return time(NULL);
|
return time(NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in new issue
Block a user