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>