blob: 3f016c4434ca12532c198424f2e7cc8783993168 [file] [log] [blame]
Simon Kelleyc8e8f5c2021-01-24 21:59:37 +00001/* dnsmasq is Copyright (c) 2000-2021 Simon Kelley
Simon Kelley9e4abcb2004-01-22 19:47:41 +00002
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
Simon Kelley824af852008-02-12 20:43:05 +00005 the Free Software Foundation; version 2 dated June, 1991, or
6 (at your option) version 3 dated 29 June, 2007.
7
Simon Kelley9e4abcb2004-01-22 19:47:41 +00008 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
Simon Kelley824af852008-02-12 20:43:05 +000012
Simon Kelley73a08a22009-02-05 20:28:08 +000013 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
Simon Kelley9e4abcb2004-01-22 19:47:41 +000015*/
16
Simon Kelley208b65c2006-08-05 21:41:37 +010017#define FTABSIZ 150 /* max number of outstanding requests (default) */
Simon Kelleyfeba5c12004-07-27 20:28:58 +010018#define MAX_PROCS 20 /* max no children for TCP requests */
19#define CHILD_LIFETIME 150 /* secs 'till terminated (RFC1035 suggests > 120s) */
Simon Kelley25cf5e32015-01-09 15:53:03 +000020#define TCP_MAX_QUERIES 100 /* Maximum number of queries per incoming TCP connection */
Simon Kelley09b768e2016-12-22 22:16:58 +000021#define TCP_BACKLOG 32 /* kernel backlog limit for TCP connections */
Simon Kelley316e2732010-01-22 20:16:09 +000022#define EDNS_PKTSZ 4096 /* default max EDNS.0 UDP packet from RFC5625 */
Dominik Derigsca6b5602021-12-28 11:03:40 +010023#define SAFE_PKTSZ 1232 /* "go anywhere" UDP packet size, see https://dnsflagday.net/2020/ */
Josh Soref730c6742017-02-06 16:14:04 +000024#define KEYBLOCK_LEN 40 /* choose to minimise fragmentation when storing DNSSEC keys */
Simon Kelley7fa836e2014-02-10 20:11:24 +000025#define DNSSEC_WORK 50 /* Max number of queries to validate one question */
Simon Kelley16972692006-10-16 20:04:18 +010026#define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */
Simon Kelley1f15b812009-10-13 17:49:32 +010027#define FORWARD_TEST 50 /* try all servers every 50 queries */
Simon Kelley28866e92011-02-14 20:19:14 +000028#define FORWARD_TIME 20 /* or 20 seconds */
Simon Kelleyc1a4e252018-01-19 22:00:05 +000029#define UDP_TEST_TIME 60 /* How often to reset our idea of max packet size. */
Simon Kelleyb9702602016-05-03 22:34:06 +010030#define SERVERS_LOGGED 30 /* Only log this many servers when logging state */
Hannu Nyman3e2496f2017-02-11 13:44:08 +000031#define LOCALS_LOGGED 8 /* Only log this many local addresses when logging state */
Simon Kelleycdeda282006-03-16 20:16:06 +000032#define LEASE_RETRY 60 /* on error, retry writing leasefile after LEASE_RETRY seconds */
Simon Kelley9e4abcb2004-01-22 19:47:41 +000033#define CACHESIZ 150 /* default cache size */
RinSatsuki28de3872015-01-10 15:22:21 +000034#define TTL_FLOOR_LIMIT 3600 /* don't allow --min-cache-ttl to raise TTL above this under any circumstances */
Simon Kelley316e2732010-01-22 20:16:09 +000035#define MAXLEASES 1000 /* maximum number of DHCP leases */
Simon Kelley5e9e0ef2006-04-17 14:24:29 +010036#define PING_WAIT 3 /* wait for ping address-in-use test */
37#define PING_CACHE_TIME 30 /* Ping test assumed to be valid this long. */
Simon Kelley849a8352006-06-09 21:02:31 +010038#define DECLINE_BACKOFF 600 /* disable DECLINEd static addresses for this long */
Simon Kelley5e9e0ef2006-04-17 14:24:29 +010039#define DHCP_PACKET_MAX 16384 /* hard limit on DHCP packet size */
Simon Kelley1fbe4d22014-03-01 20:03:47 +000040#define SMALLDNAME 50 /* most domain names are smaller than this */
41#define CNAME_CHAIN 10 /* chains longer than this atr dropped for loop protection */
Simon Kelley7e194a02020-07-12 17:43:25 +010042#define DNSSEC_MIN_TTL 60 /* DNSKEY and DS records in cache last at least this long */
Simon Kelley9e4abcb2004-01-22 19:47:41 +000043#define HOSTSFILE "/etc/hosts"
Simon Kelley44a2a312004-03-10 20:04:35 +000044#define ETHERSFILE "/etc/ethers"
Simon Kelley4d85e402020-07-12 22:45:46 +010045#define DEFLEASE 3600 /* default DHCPv4 lease time, one hour */
46#define DEFLEASE6 (3600*24) /* default lease time for DHCPv6. One day. */
Simon Kelleyc72daea2012-01-05 21:33:27 +000047#define CHUSER "nobody"
48#define CHGRP "dip"
49#define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
50#define LOG_MAX 5 /* log-queue length */
51#define RANDFILE "/dev/urandom"
Simon Kelleyad094272012-08-10 17:10:54 +010052#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq" /* Default - may be overridden by config */
Simon Kelleyc72daea2012-01-05 21:33:27 +000053#define DNSMASQ_PATH "/uk/org/thekelleys/dnsmasq"
Oldřich Jedličkad162bee2020-03-20 22:18:57 +010054#define DNSMASQ_UBUS_NAME "dnsmasq" /* Default - may be overridden by config */
Simon Kelley4f7b3042012-11-28 21:27:02 +000055#define AUTH_TTL 600 /* default TTL for auth DNS */
56#define SOA_REFRESH 1200 /* SOA refresh default */
57#define SOA_RETRY 180 /* SOA retry default */
58#define SOA_EXPIRY 1209600 /* SOA expiry default */
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +010059#define LOOP_TEST_DOMAIN "test" /* domain for loop testing, "test" is reserved by RFC 2606 and won't therefore clash */
60#define LOOP_TEST_TYPE T_TXT
Simon Kelley4f7b3042012-11-28 21:27:02 +000061
Simon Kelleyc72daea2012-01-05 21:33:27 +000062/* compile-time options: uncomment below to enable or do eg.
63 make COPTS=-DHAVE_BROKEN_RTC
64
65HAVE_BROKEN_RTC
66 define this on embedded systems which don't have an RTC
67 which keeps time over reboots. Causes dnsmasq to use uptime
68 for timing, and keep lease lengths rather than expiry times
69 in its leases file. This also make dnsmasq "flash disk friendly".
70 Normally, dnsmasq tries very hard to keep the on-disk leases file
71 up-to-date: rewriting it after every renewal. When HAVE_BROKEN_RTC
72 is in effect, the lease file is only written when a new lease is
73 created, or an old one destroyed. (Because those are the only times
74 it changes.) This vastly reduces the number of file writes, and makes
75 it viable to keep the lease file on a flash filesystem.
76 NOTE: when enabling or disabling this, be sure to delete any old
77 leases file, otherwise dnsmasq may get very confused.
78
79HAVE_TFTP
80 define this to get dnsmasq's built-in TFTP server.
81
82HAVE_DHCP
83 define this to get dnsmasq's DHCPv4 server.
84
85HAVE_DHCP6
86 define this to get dnsmasq's DHCPv6 server. (implies HAVE_DHCP).
87
88HAVE_SCRIPT
89 define this to get the ability to call scripts on lease-change.
90
91HAVE_LUASCRIPT
92 define this to get the ability to call Lua script on lease-change. (implies HAVE_SCRIPT)
93
94HAVE_DBUS
95 define this if you want to link against libdbus, and have dnsmasq
96 support some methods to allow (re)configuration of the upstream DNS
97 servers via DBus.
98
Julian Kornbergercaf4d572018-07-21 21:45:03 +010099HAVE_UBUS
100 define this if you want to link against libubus
101
Simon Kelleyc72daea2012-01-05 21:33:27 +0000102HAVE_IDN
Petr Menšíkd203af42017-05-10 21:41:57 +0100103 define this if you want international domain name 2003 support.
Simon Kelley43cdf1c2017-05-21 22:12:44 +0100104
Petr Menšíkd203af42017-05-10 21:41:57 +0100105HAVE_LIBIDN2
106 define this if you want international domain name 2008 support.
107
Simon Kelleyc72daea2012-01-05 21:33:27 +0000108HAVE_CONNTRACK
Josh Soref730c6742017-02-06 16:14:04 +0000109 define this to include code which propagates conntrack marks from
Simon Kelleyc72daea2012-01-05 21:33:27 +0000110 incoming DNS queries to the corresponding upstream queries. This adds
111 a build-dependency on libnetfilter_conntrack, but the resulting binary will
112 still run happily on a kernel without conntrack support.
113
Jason A. Donenfeld13d86c72013-02-22 18:20:53 +0000114HAVE_IPSET
115 define this to include the ability to selectively add resolved ip addresses
116 to given ipsets.
117
Simon Kelley4820dce2012-12-18 18:30:30 +0000118HAVE_AUTH
119 define this to include the facility to act as an authoritative DNS
120 server for one or more zones.
121
Simon Kelleya69b0172021-01-24 21:53:28 +0000122HAVE_CRYPTOHASH
123 include just hash function from crypto library, but no DNSSEC.
Petr Menšík2024f972020-11-25 17:18:55 +0100124
Simon Kelley063efb32014-06-17 19:49:31 +0100125HAVE_DNSSEC
126 include DNSSEC validator.
Simon Kelley4820dce2012-12-18 18:30:30 +0000127
Simon Kelley6b173352018-05-08 18:32:14 +0100128HAVE_DUMPFILE
129 include code to dump packets to a libpcap-format file for debugging.
130
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +0100131HAVE_LOOP
132 include functionality to probe for and remove DNS forwarding loops.
133
Simon Kelley04918052015-01-26 11:23:43 +0000134HAVE_INOTIFY
135 use the Linux inotify facility to efficiently re-read configuration files.
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +0100136
Kevin Darbyshire-Bryant7ac9ae12016-09-09 20:52:08 +0100137NO_ID
138 Don't report *.bind CHAOS info to clients, forward such requests upstream instead.
Simon Kelleyc72daea2012-01-05 21:33:27 +0000139NO_TFTP
140NO_DHCP
141NO_DHCP6
142NO_SCRIPT
143NO_LARGEFILE
Simon Kelley4820dce2012-12-18 18:30:30 +0000144NO_AUTH
Simon Kelley6b173352018-05-08 18:32:14 +0100145NO_DUMPFILE
Simon Kelley04918052015-01-26 11:23:43 +0000146NO_INOTIFY
klemens43517fc2017-02-19 15:53:37 +0000147 these are available to explicitly disable compile time options which would
Simon Kelleyee875042018-10-23 22:10:17 +0100148 otherwise be enabled automatically or which are enabled by default
149 in the distributed source tree. Building dnsmasq
Simon Kelleyc72daea2012-01-05 21:33:27 +0000150 with something like "make COPTS=-DNO_SCRIPT" will do the trick.
Simon Kelley063efb32014-06-17 19:49:31 +0100151NO_GMP
152 Don't use and link against libgmp, Useful if nettle is built with --enable-mini-gmp.
153
Simon Kelleyc72daea2012-01-05 21:33:27 +0000154LEASEFILE
155CONFFILE
156RESOLVFILE
157 the default locations of these files are determined below, but may be overridden
158 in a build command line using COPTS.
159
160*/
161
Simon Kelleyc979fa02014-01-21 13:45:17 +0000162/* Defining this builds a binary which handles time differently and works better on a system without a
163 stable RTC (it uses uptime, not epoch time) and writes the DHCP leases file less often to avoid flash wear.
164*/
165
166/* #define HAVE_BROKEN_RTC */
Simon Kelleyc72daea2012-01-05 21:33:27 +0000167
168/* The default set of options to build. Built with these options, dnsmasq
169 has no library dependencies other than libc */
170
Kyle Swenson545712c2021-11-17 12:25:04 -0700171/* CRADLEPOINT */
172#define NO_LARGEFILE
173#define NO_CONNTRACK
174#define NO_TFTP
175#define NO_AUTH
176#define NO_INOTIFY
Simon Kelleyc72daea2012-01-05 21:33:27 +0000177#define HAVE_DHCP
Simon Kelley07933802012-02-14 20:55:25 +0000178#define HAVE_DHCP6
Simon Kelleyc72daea2012-01-05 21:33:27 +0000179#define HAVE_SCRIPT
Simon Kelley3ddad242013-03-21 17:56:06 +0000180#define HAVE_IPSET
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +0100181#define HAVE_LOOP
Kyle Swenson545712c2021-11-17 12:25:04 -0700182/* CRADLEPOINT */
Simon Kelleyc979fa02014-01-21 13:45:17 +0000183
184/* Build options which require external libraries.
185
186 Defining HAVE_<opt>_STATIC as _well_ as HAVE_<opt> will link the library statically.
187
188 You can use "make COPTS=-DHAVE_<opt>" instead of editing these.
189*/
190
Simon Kelleyc72daea2012-01-05 21:33:27 +0000191/* #define HAVE_LUASCRIPT */
Simon Kelleyc72daea2012-01-05 21:33:27 +0000192/* #define HAVE_DBUS */
193/* #define HAVE_IDN */
Petr Menšíkd203af42017-05-10 21:41:57 +0100194/* #define HAVE_LIBIDN2 */
Simon Kelleyc72daea2012-01-05 21:33:27 +0000195/* #define HAVE_CONNTRACK */
Simon Kelleya69b0172021-01-24 21:53:28 +0000196/* #define HAVE_CRYPTOHASH */
Simon Kelley65d1e3b2014-01-08 11:00:01 +0000197/* #define HAVE_DNSSEC */
198
Simon Kelleyc72daea2012-01-05 21:33:27 +0000199
200/* Default locations for important system files. */
Simon Kelley73a08a22009-02-05 20:28:08 +0000201
202#ifndef LEASEFILE
203# if defined(__FreeBSD__) || defined (__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
204# define LEASEFILE "/var/db/dnsmasq.leases"
205# elif defined(__sun__) || defined (__sun)
206# define LEASEFILE "/var/cache/dnsmasq.leases"
Simon Kelley572b41e2011-02-18 18:11:18 +0000207# elif defined(__ANDROID__)
208# define LEASEFILE "/data/misc/dhcp/dnsmasq.leases"
Simon Kelley73a08a22009-02-05 20:28:08 +0000209# else
210# define LEASEFILE "/var/lib/misc/dnsmasq.leases"
211# endif
Simon Kelleyfeba5c12004-07-27 20:28:58 +0100212#endif
Simon Kelley73a08a22009-02-05 20:28:08 +0000213
214#ifndef CONFFILE
215# if defined(__FreeBSD__)
216# define CONFFILE "/usr/local/etc/dnsmasq.conf"
217# else
218# define CONFFILE "/etc/dnsmasq.conf"
219# endif
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000220#endif
Simon Kelley73a08a22009-02-05 20:28:08 +0000221
Simon Kelleyc72daea2012-01-05 21:33:27 +0000222#ifndef RESOLVFILE
223# if defined(__uClinux__)
224# define RESOLVFILE "/etc/config/resolv.conf"
225# else
226# define RESOLVFILE "/etc/resolv.conf"
227# endif
228#endif
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000229
Simon Kelley55d290a2012-06-29 20:58:32 +0100230#ifndef RUNFILE
231# if defined(__ANDROID__)
232# define RUNFILE "/data/dnsmasq.pid"
233# else
234# define RUNFILE "/var/run/dnsmasq.pid"
235# endif
236#endif
Simon Kelleyc72daea2012-01-05 21:33:27 +0000237
238/* platform dependent options: these are determined automatically below
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000239
Simon Kelley5e9e0ef2006-04-17 14:24:29 +0100240HAVE_LINUX_NETWORK
Simon Kelley824af852008-02-12 20:43:05 +0000241HAVE_BSD_NETWORK
242HAVE_SOLARIS_NETWORK
243 define exactly one of these to alter interaction with kernel networking.
244
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000245HAVE_GETOPT_LONG
Simon Kelleyda632e72012-03-26 11:14:05 +0100246 defined when GNU-style getopt_long available.
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000247
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000248HAVE_SOCKADDR_SA_LEN
Simon Kelleyc72daea2012-01-05 21:33:27 +0000249 defined if struct sockaddr has sa_len field (*BSD)
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000250*/
251
Simon Kelley48d12f12018-11-02 21:55:04 +0000252#if defined(__UCLIBC__)
Simon Kelley5e9e0ef2006-04-17 14:24:29 +0100253#define HAVE_LINUX_NETWORK
Simon Kelleye17fb622006-01-14 20:33:46 +0000254#if defined(__UCLIBC_HAS_GNU_GETOPT__) || \
255 ((__UCLIBC_MAJOR__==0) && (__UCLIBC_MINOR__==9) && (__UCLIBC_SUBLEVEL__<21))
256# define HAVE_GETOPT_LONG
Simon Kelley5e9e0ef2006-04-17 14:24:29 +0100257#endif
Simon Kelleye17fb622006-01-14 20:33:46 +0000258#undef HAVE_SOCKADDR_SA_LEN
Simon Kelley7cebd202006-05-06 14:13:33 +0100259#if defined(__UCLIBC_HAS_IPV6__)
260# ifndef IPV6_V6ONLY
261# define IPV6_V6ONLY 26
262# endif
Simon Kelleye17fb622006-01-14 20:33:46 +0000263#endif
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000264
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000265/* This is for glibc 2.x */
266#elif defined(__linux__)
Simon Kelley5e9e0ef2006-04-17 14:24:29 +0100267#define HAVE_LINUX_NETWORK
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000268#define HAVE_GETOPT_LONG
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000269#undef HAVE_SOCKADDR_SA_LEN
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000270
Simon Kelley9e038942008-05-30 20:06:34 +0100271#elif defined(__FreeBSD__) || \
272 defined(__OpenBSD__) || \
273 defined(__DragonFly__) || \
Simon Kelley8ef5ada2010-06-03 19:42:45 +0100274 defined(__FreeBSD_kernel__)
Simon Kelley824af852008-02-12 20:43:05 +0000275#define HAVE_BSD_NETWORK
Josh Soref730c6742017-02-06 16:14:04 +0000276/* Later versions of FreeBSD have getopt_long() */
Simon Kelley59353a62004-11-21 19:34:28 +0000277#if defined(optional_argument) && defined(required_argument)
278# define HAVE_GETOPT_LONG
Simon Kelley59353a62004-11-21 19:34:28 +0000279#endif
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000280#define HAVE_SOCKADDR_SA_LEN
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000281
282#elif defined(__APPLE__)
Simon Kelley824af852008-02-12 20:43:05 +0000283#define HAVE_BSD_NETWORK
Simon Kelley316e2732010-01-22 20:16:09 +0000284#define HAVE_GETOPT_LONG
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000285#define HAVE_SOCKADDR_SA_LEN
Simon Kelleye198fe82019-08-22 23:23:29 +0100286#define NO_IPSET
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000287/* Define before sys/socket.h is included so we get socklen_t */
288#define _BSD_SOCKLEN_T_
Simon Kelley6dbdc972013-10-28 14:22:57 +0000289/* Select the RFC_3542 version of the IPv6 socket API.
290 Define before netinet6/in6.h is included. */
Simon Kelleye198fe82019-08-22 23:23:29 +0100291#define __APPLE_USE_RFC_3542
292/* Required for Mojave. */
293#ifndef SOL_TCP
294# define SOL_TCP IPPROTO_TCP
295#endif
Chen Yufei993f8cb2014-07-08 22:40:03 +0100296#define NO_IPSET
Simon Kelley6dbdc972013-10-28 14:22:57 +0000297
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000298#elif defined(__NetBSD__)
Simon Kelley824af852008-02-12 20:43:05 +0000299#define HAVE_BSD_NETWORK
Simon Kelleyfd9fa482004-10-21 20:24:00 +0100300#define HAVE_GETOPT_LONG
Simon Kelley9e4abcb2004-01-22 19:47:41 +0000301#define HAVE_SOCKADDR_SA_LEN
Simon Kelley824af852008-02-12 20:43:05 +0000302
303#elif defined(__sun) || defined(__sun__)
304#define HAVE_SOLARIS_NETWORK
Simon Kelley7622fc02009-06-04 20:32:05 +0100305#define HAVE_GETOPT_LONG
Simon Kelley824af852008-02-12 20:43:05 +0000306#undef HAVE_SOCKADDR_SA_LEN
Simon Kelley7622fc02009-06-04 20:32:05 +0100307#define ETHER_ADDR_LEN 6
308
Simon Kelley824af852008-02-12 20:43:05 +0000309#endif
310
Simon Kelleyc72daea2012-01-05 21:33:27 +0000311/* rules to implement compile-time option dependencies and
312 the NO_XXX flags */
313
Simon Kelleyc72daea2012-01-05 21:33:27 +0000314#ifdef NO_TFTP
315#undef HAVE_TFTP
316#endif
317
318#ifdef NO_DHCP
319#undef HAVE_DHCP
320#undef HAVE_DHCP6
321#endif
322
Simon Kelleyee875042018-10-23 22:10:17 +0100323#if defined(NO_DHCP6)
Simon Kelleyc72daea2012-01-05 21:33:27 +0000324#undef HAVE_DHCP6
325#endif
326
327/* DHCP6 needs DHCP too */
328#ifdef HAVE_DHCP6
329#define HAVE_DHCP
330#endif
331
Simon Kelley48d12f12018-11-02 21:55:04 +0000332#if defined(NO_SCRIPT)
Simon Kelleyc72daea2012-01-05 21:33:27 +0000333#undef HAVE_SCRIPT
334#undef HAVE_LUASCRIPT
335#endif
336
337/* Must HAVE_SCRIPT to HAVE_LUASCRIPT */
338#ifdef HAVE_LUASCRIPT
339#define HAVE_SCRIPT
340#endif
341
Simon Kelley4820dce2012-12-18 18:30:30 +0000342#ifdef NO_AUTH
343#undef HAVE_AUTH
344#endif
Simon Kelleyc72daea2012-01-05 21:33:27 +0000345
Simon Kelleyc4a09372014-06-02 20:30:07 +0100346#if defined(NO_IPSET)
Jason A. Donenfeld13d86c72013-02-22 18:20:53 +0000347#undef HAVE_IPSET
348#endif
349
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +0100350#ifdef NO_LOOP
351#undef HAVE_LOOP
352#endif
353
Simon Kelley6b173352018-05-08 18:32:14 +0100354#ifdef NO_DUMPFILE
355#undef HAVE_DUMPFILE
356#endif
357
Simon Kelley04918052015-01-26 11:23:43 +0000358#if defined (HAVE_LINUX_NETWORK) && !defined(NO_INOTIFY)
359#define HAVE_INOTIFY
360#endif
361
Simon Kelleyc72daea2012-01-05 21:33:27 +0000362/* Define a string indicating which options are in use.
Josh Soref730c6742017-02-06 16:14:04 +0000363 DNSMASQ_COMPILE_OPTS is only defined in dnsmasq.c */
Simon Kelleyc72daea2012-01-05 21:33:27 +0000364
365#ifdef DNSMASQ_COMPILE_OPTS
366
367static char *compile_opts =
Simon Kelleyc72daea2012-01-05 21:33:27 +0000368"IPv6 "
369#ifndef HAVE_GETOPT_LONG
370"no-"
371#endif
372"GNU-getopt "
373#ifdef HAVE_BROKEN_RTC
374"no-RTC "
375#endif
Simon Kelleyc72daea2012-01-05 21:33:27 +0000376#ifndef HAVE_DBUS
377"no-"
378#endif
379"DBus "
Jan Willem Janssena2b82202019-03-25 12:42:23 +0100380#ifndef HAVE_UBUS
381"no-"
382#endif
383"UBus "
Simon Kelleyc72daea2012-01-05 21:33:27 +0000384#ifndef LOCALEDIR
385"no-"
386#endif
387"i18n "
Simon Kelley43cdf1c2017-05-21 22:12:44 +0100388#if defined(HAVE_LIBIDN2)
Petr Menšíkd203af42017-05-10 21:41:57 +0100389"IDN2 "
Simon Kelley43cdf1c2017-05-21 22:12:44 +0100390#else
391 #if !defined(HAVE_IDN)
392"no-"
393 #endif
394"IDN "
395#endif
Simon Kelleyc72daea2012-01-05 21:33:27 +0000396#ifndef HAVE_DHCP
397"no-"
398#endif
399"DHCP "
400#if defined(HAVE_DHCP)
401# if !defined (HAVE_DHCP6)
402 "no-"
403# endif
404 "DHCPv6 "
Simon Kelleya93b02e2017-04-16 20:38:22 +0100405#endif
406#if !defined(HAVE_SCRIPT)
Simon Kelleyc72daea2012-01-05 21:33:27 +0000407 "no-scripts "
Simon Kelleya93b02e2017-04-16 20:38:22 +0100408#else
409# if !defined(HAVE_LUASCRIPT)
410 "no-"
Simon Kelleyc72daea2012-01-05 21:33:27 +0000411# endif
Simon Kelleya93b02e2017-04-16 20:38:22 +0100412 "Lua "
Simon Kelleyc72daea2012-01-05 21:33:27 +0000413#endif
414#ifndef HAVE_TFTP
415"no-"
416#endif
417"TFTP "
418#ifndef HAVE_CONNTRACK
419"no-"
420#endif
Simon Kelley4820dce2012-12-18 18:30:30 +0000421"conntrack "
Jason A. Donenfeld13d86c72013-02-22 18:20:53 +0000422#ifndef HAVE_IPSET
423"no-"
424#endif
425"ipset "
Simon Kelley4820dce2012-12-18 18:30:30 +0000426#ifndef HAVE_AUTH
427"no-"
428#endif
Simon Kelley0fc2f312014-01-08 10:26:58 +0000429"auth "
Simon Kelleya69b0172021-01-24 21:53:28 +0000430#if !defined(HAVE_CRYPTOHASH) && !defined(HAVE_DNSSEC)
Petr Menšík2024f972020-11-25 17:18:55 +0100431"no-"
432#endif
Simon Kelleya69b0172021-01-24 21:53:28 +0000433"cryptohash "
Simon Kelley0fc2f312014-01-08 10:26:58 +0000434#ifndef HAVE_DNSSEC
435"no-"
436#endif
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +0100437"DNSSEC "
Kevin Darbyshire-Bryant7ac9ae12016-09-09 20:52:08 +0100438#ifdef NO_ID
439"no-ID "
440#endif
Simon Kelleyb5ea1cc2014-07-29 16:34:14 +0100441#ifndef HAVE_LOOP
442"no-"
443#endif
Simon Kelley04918052015-01-26 11:23:43 +0000444"loop-detect "
445#ifndef HAVE_INOTIFY
446"no-"
447#endif
Simon Kelley6b173352018-05-08 18:32:14 +0100448"inotify "
449#ifndef HAVE_DUMPFILE
450"no-"
451#endif
452"dumpfile";
Simon Kelleyc72daea2012-01-05 21:33:27 +0000453
454#endif
455
456
457