Annotation of embedaddon/dnsmasq/src/config.h, revision 1.1
1.1 ! misho 1: /* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
! 2:
! 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
! 5: the Free Software Foundation; version 2 dated June, 1991, or
! 6: (at your option) version 3 dated 29 June, 2007.
! 7:
! 8: 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.
! 12:
! 13: 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/>.
! 15: */
! 16:
! 17: #define FTABSIZ 150 /* max number of outstanding requests (default) */
! 18: #define MAX_PROCS 20 /* max no children for TCP requests */
! 19: #define CHILD_LIFETIME 150 /* secs 'till terminated (RFC1035 suggests > 120s) */
! 20: #define EDNS_PKTSZ 4096 /* default max EDNS.0 UDP packet from RFC5625 */
! 21: #define KEYBLOCK_LEN 140 /* choose to mininise fragmentation when storing DNSSEC keys */
! 22: #define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */
! 23: #define FORWARD_TEST 50 /* try all servers every 50 queries */
! 24: #define FORWARD_TIME 20 /* or 20 seconds */
! 25: #define RANDOM_SOCKS 64 /* max simultaneous random ports */
! 26: #define LEASE_RETRY 60 /* on error, retry writing leasefile after LEASE_RETRY seconds */
! 27: #define CACHESIZ 150 /* default cache size */
! 28: #define MAXLEASES 1000 /* maximum number of DHCP leases */
! 29: #define PING_WAIT 3 /* wait for ping address-in-use test */
! 30: #define PING_CACHE_TIME 30 /* Ping test assumed to be valid this long. */
! 31: #define DECLINE_BACKOFF 600 /* disable DECLINEd static addresses for this long */
! 32: #define DHCP_PACKET_MAX 16384 /* hard limit on DHCP packet size */
! 33: #define SMALLDNAME 40 /* most domain names are smaller than this */
! 34: #define HOSTSFILE "/etc/hosts"
! 35: #define ETHERSFILE "/etc/ethers"
! 36: #define DEFLEASE 3600 /* default lease time, 1 hour */
! 37: #define CHUSER "nobody"
! 38: #define CHGRP "dip"
! 39: #define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
! 40: #define LOG_MAX 5 /* log-queue length */
! 41: #define RANDFILE "/dev/urandom"
! 42: #define EDNS0_OPTION_MAC 5 /* dyndns.org temporary assignment */
! 43: #define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq" /* Default - may be overridden by config */
! 44: #define DNSMASQ_PATH "/uk/org/thekelleys/dnsmasq"
! 45: #define AUTH_TTL 600 /* default TTL for auth DNS */
! 46: #define SOA_REFRESH 1200 /* SOA refresh default */
! 47: #define SOA_RETRY 180 /* SOA retry default */
! 48: #define SOA_EXPIRY 1209600 /* SOA expiry default */
! 49: #define RA_INTERVAL 600 /* Send unsolicited RA's this often when not provoked. */
! 50:
! 51: /* compile-time options: uncomment below to enable or do eg.
! 52: make COPTS=-DHAVE_BROKEN_RTC
! 53:
! 54: HAVE_BROKEN_RTC
! 55: define this on embedded systems which don't have an RTC
! 56: which keeps time over reboots. Causes dnsmasq to use uptime
! 57: for timing, and keep lease lengths rather than expiry times
! 58: in its leases file. This also make dnsmasq "flash disk friendly".
! 59: Normally, dnsmasq tries very hard to keep the on-disk leases file
! 60: up-to-date: rewriting it after every renewal. When HAVE_BROKEN_RTC
! 61: is in effect, the lease file is only written when a new lease is
! 62: created, or an old one destroyed. (Because those are the only times
! 63: it changes.) This vastly reduces the number of file writes, and makes
! 64: it viable to keep the lease file on a flash filesystem.
! 65: NOTE: when enabling or disabling this, be sure to delete any old
! 66: leases file, otherwise dnsmasq may get very confused.
! 67:
! 68: HAVE_TFTP
! 69: define this to get dnsmasq's built-in TFTP server.
! 70:
! 71: HAVE_DHCP
! 72: define this to get dnsmasq's DHCPv4 server.
! 73:
! 74: HAVE_DHCP6
! 75: define this to get dnsmasq's DHCPv6 server. (implies HAVE_DHCP).
! 76:
! 77: HAVE_SCRIPT
! 78: define this to get the ability to call scripts on lease-change.
! 79:
! 80: HAVE_LUASCRIPT
! 81: define this to get the ability to call Lua script on lease-change. (implies HAVE_SCRIPT)
! 82:
! 83: HAVE_DBUS
! 84: define this if you want to link against libdbus, and have dnsmasq
! 85: support some methods to allow (re)configuration of the upstream DNS
! 86: servers via DBus.
! 87:
! 88: HAVE_IDN
! 89: define this if you want international domain name support.
! 90: NOTE: for backwards compatibility, IDN support is automatically
! 91: included when internationalisation support is built, using the
! 92: *-i18n makefile targets, even if HAVE_IDN is not explicitly set.
! 93:
! 94: HAVE_CONNTRACK
! 95: define this to include code which propogates conntrack marks from
! 96: incoming DNS queries to the corresponding upstream queries. This adds
! 97: a build-dependency on libnetfilter_conntrack, but the resulting binary will
! 98: still run happily on a kernel without conntrack support.
! 99:
! 100: HAVE_IPSET
! 101: define this to include the ability to selectively add resolved ip addresses
! 102: to given ipsets.
! 103:
! 104: HAVE_AUTH
! 105: define this to include the facility to act as an authoritative DNS
! 106: server for one or more zones.
! 107:
! 108:
! 109: NO_IPV6
! 110: NO_TFTP
! 111: NO_DHCP
! 112: NO_DHCP6
! 113: NO_SCRIPT
! 114: NO_LARGEFILE
! 115: NO_AUTH
! 116: these are avilable to explictly disable compile time options which would
! 117: otherwise be enabled automatically (HAVE_IPV6, >2Gb file sizes) or
! 118: which are enabled by default in the distributed source tree. Building dnsmasq
! 119: with something like "make COPTS=-DNO_SCRIPT" will do the trick.
! 120:
! 121: LEASEFILE
! 122: CONFFILE
! 123: RESOLVFILE
! 124: the default locations of these files are determined below, but may be overridden
! 125: in a build command line using COPTS.
! 126:
! 127: */
! 128:
! 129:
! 130: /* The default set of options to build. Built with these options, dnsmasq
! 131: has no library dependencies other than libc */
! 132:
! 133: #define HAVE_DHCP
! 134: #define HAVE_DHCP6
! 135: #define HAVE_TFTP
! 136: #define HAVE_SCRIPT
! 137: #define HAVE_AUTH
! 138: #define HAVE_IPSET
! 139: /* #define HAVE_LUASCRIPT */
! 140: /* #define HAVE_BROKEN_RTC */
! 141: /* #define HAVE_DBUS */
! 142: /* #define HAVE_IDN */
! 143: /* #define HAVE_CONNTRACK */
! 144:
! 145:
! 146: /* Default locations for important system files. */
! 147:
! 148: #ifndef LEASEFILE
! 149: # if defined(__FreeBSD__) || defined (__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
! 150: # define LEASEFILE "/var/db/dnsmasq.leases"
! 151: # elif defined(__sun__) || defined (__sun)
! 152: # define LEASEFILE "/var/cache/dnsmasq.leases"
! 153: # elif defined(__ANDROID__)
! 154: # define LEASEFILE "/data/misc/dhcp/dnsmasq.leases"
! 155: # else
! 156: # define LEASEFILE "/var/lib/misc/dnsmasq.leases"
! 157: # endif
! 158: #endif
! 159:
! 160: #ifndef CONFFILE
! 161: # if defined(__FreeBSD__)
! 162: # define CONFFILE "/usr/local/etc/dnsmasq.conf"
! 163: # else
! 164: # define CONFFILE "/etc/dnsmasq.conf"
! 165: # endif
! 166: #endif
! 167:
! 168: #ifndef RESOLVFILE
! 169: # if defined(__uClinux__)
! 170: # define RESOLVFILE "/etc/config/resolv.conf"
! 171: # else
! 172: # define RESOLVFILE "/etc/resolv.conf"
! 173: # endif
! 174: #endif
! 175:
! 176: #ifndef RUNFILE
! 177: # if defined(__ANDROID__)
! 178: # define RUNFILE "/data/dnsmasq.pid"
! 179: # else
! 180: # define RUNFILE "/var/run/dnsmasq.pid"
! 181: # endif
! 182: #endif
! 183:
! 184: /* platform dependent options: these are determined automatically below
! 185:
! 186: HAVE_LINUX_NETWORK
! 187: HAVE_BSD_NETWORK
! 188: HAVE_SOLARIS_NETWORK
! 189: define exactly one of these to alter interaction with kernel networking.
! 190:
! 191: HAVE_GETOPT_LONG
! 192: defined when GNU-style getopt_long available.
! 193:
! 194: HAVE_ARC4RANDOM
! 195: defined if arc4random() available to get better security from DNS spoofs
! 196: by using really random ids (OpenBSD)
! 197:
! 198: HAVE_SOCKADDR_SA_LEN
! 199: defined if struct sockaddr has sa_len field (*BSD)
! 200: */
! 201:
! 202: /* Must preceed __linux__ since uClinux defines __linux__ too. */
! 203: #if defined(__uClinux__)
! 204: #define HAVE_LINUX_NETWORK
! 205: #define HAVE_GETOPT_LONG
! 206: #undef HAVE_ARC4RANDOM
! 207: #undef HAVE_SOCKADDR_SA_LEN
! 208: /* Never use fork() on uClinux. Note that this is subtly different from the
! 209: --keep-in-foreground option, since it also suppresses forking new
! 210: processes for TCP connections and disables the call-a-script on leasechange
! 211: system. It's intended for use on MMU-less kernels. */
! 212: #define NO_FORK
! 213:
! 214: #elif defined(__UCLIBC__)
! 215: #define HAVE_LINUX_NETWORK
! 216: #if defined(__UCLIBC_HAS_GNU_GETOPT__) || \
! 217: ((__UCLIBC_MAJOR__==0) && (__UCLIBC_MINOR__==9) && (__UCLIBC_SUBLEVEL__<21))
! 218: # define HAVE_GETOPT_LONG
! 219: #endif
! 220: #undef HAVE_ARC4RANDOM
! 221: #undef HAVE_SOCKADDR_SA_LEN
! 222: #if !defined(__ARCH_HAS_MMU__) && !defined(__UCLIBC_HAS_MMU__)
! 223: # define NO_FORK
! 224: #endif
! 225: #if defined(__UCLIBC_HAS_IPV6__)
! 226: # ifndef IPV6_V6ONLY
! 227: # define IPV6_V6ONLY 26
! 228: # endif
! 229: #endif
! 230:
! 231: /* This is for glibc 2.x */
! 232: #elif defined(__linux__)
! 233: #define HAVE_LINUX_NETWORK
! 234: #define HAVE_GETOPT_LONG
! 235: #undef HAVE_ARC4RANDOM
! 236: #undef HAVE_SOCKADDR_SA_LEN
! 237:
! 238: #elif defined(__FreeBSD__) || \
! 239: defined(__OpenBSD__) || \
! 240: defined(__DragonFly__) || \
! 241: defined(__FreeBSD_kernel__)
! 242: #define HAVE_BSD_NETWORK
! 243: /* Later verions of FreeBSD have getopt_long() */
! 244: #if defined(optional_argument) && defined(required_argument)
! 245: # define HAVE_GETOPT_LONG
! 246: #endif
! 247: #if !defined(__FreeBSD_kernel__)
! 248: # define HAVE_ARC4RANDOM
! 249: #endif
! 250: #define HAVE_SOCKADDR_SA_LEN
! 251:
! 252: #elif defined(__APPLE__)
! 253: #define HAVE_BSD_NETWORK
! 254: #define HAVE_GETOPT_LONG
! 255: #define HAVE_ARC4RANDOM
! 256: #define HAVE_SOCKADDR_SA_LEN
! 257: /* Define before sys/socket.h is included so we get socklen_t */
! 258: #define _BSD_SOCKLEN_T_
! 259:
! 260: #elif defined(__NetBSD__)
! 261: #define HAVE_BSD_NETWORK
! 262: #define HAVE_GETOPT_LONG
! 263: #undef HAVE_ARC4RANDOM
! 264: #define HAVE_SOCKADDR_SA_LEN
! 265:
! 266: #elif defined(__sun) || defined(__sun__)
! 267: #define HAVE_SOLARIS_NETWORK
! 268: #define HAVE_GETOPT_LONG
! 269: #undef HAVE_ARC4RANDOM
! 270: #undef HAVE_SOCKADDR_SA_LEN
! 271: #define ETHER_ADDR_LEN 6
! 272:
! 273: #endif
! 274:
! 275: /* Decide if we're going to support IPv6 */
! 276: /* We assume that systems which don't have IPv6
! 277: headers don't have ntop and pton either */
! 278:
! 279: #if defined(INET6_ADDRSTRLEN) && defined(IPV6_V6ONLY)
! 280: # define HAVE_IPV6
! 281: # define ADDRSTRLEN INET6_ADDRSTRLEN
! 282: #elif defined(INET_ADDRSTRLEN)
! 283: # undef HAVE_IPV6
! 284: # define ADDRSTRLEN INET_ADDRSTRLEN
! 285: #else
! 286: # undef HAVE_IPV6
! 287: # define ADDRSTRLEN 16 /* 4*3 + 3 dots + NULL */
! 288: #endif
! 289:
! 290:
! 291: /* rules to implement compile-time option dependencies and
! 292: the NO_XXX flags */
! 293:
! 294: #ifdef NO_IPV6
! 295: #undef HAVE_IPV6
! 296: #endif
! 297:
! 298: #ifdef NO_TFTP
! 299: #undef HAVE_TFTP
! 300: #endif
! 301:
! 302: #ifdef NO_DHCP
! 303: #undef HAVE_DHCP
! 304: #undef HAVE_DHCP6
! 305: #endif
! 306:
! 307: #if defined(NO_DHCP6) || !defined(HAVE_IPV6)
! 308: #undef HAVE_DHCP6
! 309: #endif
! 310:
! 311: /* DHCP6 needs DHCP too */
! 312: #ifdef HAVE_DHCP6
! 313: #define HAVE_DHCP
! 314: #endif
! 315:
! 316: #if defined(NO_SCRIPT) || !defined(HAVE_DHCP) || defined(NO_FORK)
! 317: #undef HAVE_SCRIPT
! 318: #undef HAVE_LUASCRIPT
! 319: #endif
! 320:
! 321: /* Must HAVE_SCRIPT to HAVE_LUASCRIPT */
! 322: #ifdef HAVE_LUASCRIPT
! 323: #define HAVE_SCRIPT
! 324: #endif
! 325:
! 326: #ifdef NO_AUTH
! 327: #undef HAVE_AUTH
! 328: #endif
! 329:
! 330: #if defined(NO_IPSET) || !defined(HAVE_LINUX_NETWORK)
! 331: #undef HAVE_IPSET
! 332: #endif
! 333:
! 334: /* Define a string indicating which options are in use.
! 335: DNSMASQP_COMPILE_OPTS is only defined in dnsmasq.c */
! 336:
! 337: #ifdef DNSMASQ_COMPILE_OPTS
! 338:
! 339: static char *compile_opts =
! 340: #ifndef HAVE_IPV6
! 341: "no-"
! 342: #endif
! 343: "IPv6 "
! 344: #ifndef HAVE_GETOPT_LONG
! 345: "no-"
! 346: #endif
! 347: "GNU-getopt "
! 348: #ifdef HAVE_BROKEN_RTC
! 349: "no-RTC "
! 350: #endif
! 351: #ifdef NO_FORK
! 352: "no-MMU "
! 353: #endif
! 354: #ifndef HAVE_DBUS
! 355: "no-"
! 356: #endif
! 357: "DBus "
! 358: #ifndef LOCALEDIR
! 359: "no-"
! 360: #endif
! 361: "i18n "
! 362: #if !defined(LOCALEDIR) && !defined(HAVE_IDN)
! 363: "no-"
! 364: #endif
! 365: "IDN "
! 366: #ifndef HAVE_DHCP
! 367: "no-"
! 368: #endif
! 369: "DHCP "
! 370: #if defined(HAVE_DHCP)
! 371: # if !defined (HAVE_DHCP6)
! 372: "no-"
! 373: # endif
! 374: "DHCPv6 "
! 375: # if !defined(HAVE_SCRIPT)
! 376: "no-scripts "
! 377: # else
! 378: # if !defined(HAVE_LUASCRIPT)
! 379: "no-"
! 380: # endif
! 381: "Lua "
! 382: # endif
! 383: #endif
! 384: #ifndef HAVE_TFTP
! 385: "no-"
! 386: #endif
! 387: "TFTP "
! 388: #ifndef HAVE_CONNTRACK
! 389: "no-"
! 390: #endif
! 391: "conntrack "
! 392: #ifndef HAVE_IPSET
! 393: "no-"
! 394: #endif
! 395: "ipset "
! 396: #ifndef HAVE_AUTH
! 397: "no-"
! 398: #endif
! 399: "auth";
! 400:
! 401: #endif
! 402:
! 403:
! 404:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>