File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / dnsmasq / CHANGELOG
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 16:31:38 2014 UTC (10 years ago) by misho
Branches: elwix, dnsmasq, MAIN
CVS tags: v2_71, HEAD
dnsmasq 2.71

    1: version 2.71
    2:             Subtle change to error handling to help DNSSEC validation 
    3: 	    when servers fail to provide NODATA answers for 
    4: 	    non-existent DS records.
    5: 
    6: 	    Tweak code which removes DNSSEC records from answers when
    7: 	    not required. Fixes broken answers when additional section
    8: 	    has real records in it. Thanks to Marco Davids for the bug 
    9: 	    report.
   10: 
   11: 	    Fix DNSSEC validation of ANY queries. Thanks to Marco Davids
   12: 	    for spotting that too.
   13: 
   14: 	    Fix total DNS failure and 100% CPU use if cachesize set to zero,
   15: 	    regression introduced in 2.69. Thanks to James Hunt and
   16: 	    the Ubuntu crowd for assistance in fixing this.
   17: 
   18: 
   19: version 2.70
   20:             Fix crash, introduced in 2.69, on TCP request when dnsmasq
   21: 	    compiled with DNSSEC support, but running without DNSSEC
   22: 	    enabled. Thanks to Manish Sing for spotting that one.
   23: 
   24: 	    Fix regression which broke ipset functionality. Thanks to 
   25: 	    Wang Jian for the bug report.
   26: 
   27: 
   28: version 2.69
   29: 	    Implement dynamic interface discovery on *BSD. This allows
   30: 	    the contructor: syntax to be used in dhcp-range for DHCPv6
   31: 	    on the BSD platform. Thanks to Matthias Andree for
   32: 	    valuable research on how to implement this.
   33: 
   34: 	    Fix infinite loop associated with some --bogus-nxdomain
   35: 	    configs. Thanks fogobogo for the bug report.
   36: 
   37: 	    Fix missing RA RDNS option with configuration like
   38: 	    --dhcp-option=option6:23,[::] Thanks to Tsachi Kimeldorfer
   39: 	    for spotting the problem.
   40: 
   41: 	    Add [fd00::] and [fe80::] as special addresses in DHCPv6
   42: 	    options, analogous to [::]. [fd00::] is replaced with the
   43: 	    actual ULA of the interface on the machine running
   44: 	    dnsmasq, [fe80::] with the link-local address. 
   45: 	    Thanks to Tsachi Kimeldorfer for championing this.
   46: 
   47: 	    DNSSEC validation and caching. Dnsmasq needs to be
   48: 	    compiled with this enabled, with 
   49: 	    
   50: 	    make dnsmasq COPTS=-DHAVE_DNSSEC
   51: 	    
   52: 	    this add dependencies on the nettle crypto library and the 
   53: 	    gmp maths library. It's possible to have these linked
   54: 	    statically with
   55: 	    
   56: 	    make dnsmasq COPTS='-DHAVE_DNSSEC -DHAVE_DNSSEC_STATIC'
   57: 	    
   58: 	    which bloats the dnsmasq binary, but saves the size of 
   59: 	    the shared libraries which are much bigger.
   60: 
   61: 	    To enable, DNSSEC, you will need a set of
   62: 	    trust-anchors. Now that the TLDs are signed, this can be
   63: 	    the keys for the root zone, and for convenience they are
   64: 	    included in trust-anchors.conf in the dnsmasq
   65: 	    distribution. You should of course check that these are
   66: 	    legitimate and up-to-date. So, adding
   67: 	    
   68: 	    conf-file=/path/to/trust-anchors.conf
   69: 	    dnssec
   70: 
   71: 	    to your config is all thats needed to get things
   72: 	    working. The upstream nameservers have to be DNSSEC-capable
   73: 	    too, of course. Many ISP nameservers aren't, but the
   74: 	    Google public nameservers (8.8.8.8 and 8.8.4.4) are.
   75: 	    When DNSSEC is configured, dnsmasq validates any queries 
   76: 	    for domains which are signed. Query results which are 
   77: 	    bogus are replaced with SERVFAIL replies, and results 
   78: 	    which are correctly signed have the AD bit set. In 
   79: 	    addition, and just as importantly, dnsmasq supplies 
   80: 	    correct DNSSEC information to clients which are doing 
   81: 	    their own validation, and caches DNSKEY, DS and RRSIG
   82: 	    records, which significantly improve the performance of 
   83: 	    downstream validators. Setting --log-queries will show 
   84: 	    DNSSEC in action.
   85: 
   86: 	    If a domain is returned from an upstream nameserver without 
   87: 	    DNSSEC signature, dnsmasq by default trusts this. This 
   88: 	    means that for unsigned zone (still the majority) there 
   89: 	    is effectively no cost for having DNSSEC enabled. Of course
   90: 	    this allows an attacker to replace a signed record with a 
   91: 	    false unsigned record. This is addressed by the 
   92: 	    --dnssec-check-unsigned flag, which instructs dnsmasq
   93: 	    to prove that an unsigned record is legitimate, by finding  
   94: 	    a secure proof that the zone containing the record is not
   95: 	    signed. Doing this has costs (typically one or two extra
   96: 	    upstream queries). It also has a nasty failure mode if
   97: 	    dnsmasq's upstream nameservers are not DNSSEC capable. 
   98: 	    Without --dnssec-check-unsigned using such an upstream
   99: 	    server will simply result in not queries being validated; 
  100: 	    with --dnssec-check-unsigned enabled and a 
  101: 	    DNSSEC-ignorant upstream server, _all_ queries will fail.
  102: 
  103: 	    Note that DNSSEC requires that the local time is valid and 
  104: 	    accurate, if not then DNSSEC validation will fail. NTP 
  105: 	    should be running. This presents a problem for routers
  106: 	    without a battery-backed clock. To set the time needs NTP 
  107: 	    to do DNS lookups, but lookups will fail until NTP has run.
  108: 	    To address this, there's a flag, --dnssec-no-timecheck 
  109: 	    which disables the time checks (only) in DNSSEC. When dnsmasq
  110: 	    is started and the clock is not synced, this flag should
  111: 	    be used. As soon as the clock is synced, SIGHUP dnsmasq. 
  112: 	    The SIGHUP clears the cache of partially-validated data and
  113: 	    resets the no-timecheck flag, so that all DNSSEC checks 
  114: 	    henceforward will be complete.
  115: 	    
  116: 	    The development of DNSSEC in dnsmasq was started by 
  117: 	    Giovanni Bajo, to whom huge thanks are owed. It has been
  118: 	    supported by Comcast, whose techfund grant has allowed for 
  119: 	    an invaluable period of full-time work to get it to 
  120: 	    a workable state.
  121:  
  122: 	    Add --rev-server. Thanks to Dave Taht for suggesting this.
  123: 	    
  124: 	    Add --servers-file. Allows dynamic update of upstream servers 
  125: 	    full access to configuration. 
  126: 
  127: 	    Add --local-service. Accept DNS queries only from hosts 
  128:             whose address is on a local subnet, ie a subnet for which 
  129:             an interface exists on the server. This option
  130:             only has effect if there are no --interface --except-interface,
  131:             --listen-address or --auth-server options. It is intended 
  132:             to be set as a default on installation, to allow
  133:             unconfigured installations to be useful but also safe from 
  134: 	    being used for DNS amplification attacks.
  135: 
  136: 	    Fix crashes in cache_get_cname_target() when dangling CNAMEs
  137: 	    encountered. Thanks to Andy and the rt-n56u project for
  138: 	    find this and helping to chase it down.
  139: 
  140: 	    Fix wrong RCODE in authoritative DNS replies to PTR queries. The
  141: 	    correct answer was included, but the RCODE was set to NXDOMAIN.
  142: 	    Thanks to Craig McQueen for spotting this.
  143: 
  144: 	    Make statistics available as DNS queries in the .bind TLD as 
  145: 	    well as logging them.
  146: 
  147: 
  148: version 2.68
  149:             Use random addresses for DHCPv6 temporary address
  150:             allocations, instead of algorithmically determined stable
  151:             addresses.
  152: 
  153: 	    Fix bug which meant that the DHCPv6 DUID was not available
  154: 	    in DHCP script runs during the lifetime of the dnsmasq
  155: 	    process which created the DUID de-novo. Once the DUID was
  156: 	    created and stored in the lease file and dnsmasq
  157: 	    restarted, this bug disappeared.
  158: 
  159: 	    Fix bug introduced in 2.67 which could result in erroneous
  160: 	    NXDOMAIN returns to CNAME queries.
  161: 
  162: 	    Fix build failures on MacOS X and openBSD.
  163: 
  164: 	    Allow subnet specifications in --auth-zone to be interface 
  165: 	    names as well as address literals. This makes it possible
  166: 	    to configure authoritative DNS when local address ranges
  167: 	    are dynamic and works much better than the previous
  168: 	    work-around which exempted contructed DHCP ranges from the
  169: 	    IP address filtering. As a consequence, that work-around
  170: 	    is removed. Under certain circumstances, this change wil
  171: 	    break existing configuration: if you're relying on the
  172: 	    contructed-range exception, you need to change --auth-zone
  173: 	    to specify the same interface as is used to construct your
  174: 	    DHCP ranges, probably with a trailing "/6" like this: 
  175: 	    --auth-zone=example.com,eth0/6 to limit the addresses to
  176: 	    IPv6 addresses of eth0.
  177: 
  178: 	    Fix problems when advertising deleted IPv6 prefixes. If
  179: 	    the prefix is deleted (rather than replaced), it doesn't
  180: 	    get advertised with zero preferred time. Thanks to Tsachi
  181: 	    for the bug report. 
  182: 
  183: 	    Fix segfault with some locally configured CNAMEs. Thanks
  184: 	    to Andrew Childs for spotting the problem.
  185: 
  186: 	    Fix memory leak on re-reading /etc/hosts and friends,
  187: 	    introduced in 2.67.
  188: 
  189: 	    Check the arrival interface of incoming DNS and TFTP
  190: 	    requests via IPv6, even in --bind-interfaces mode. This
  191: 	    isn't possible for IPv4 and can generate scary warnings,
  192: 	    but as it's always possible for IPv6 (the API always
  193: 	    exists) then we should do it always. 
  194: 	    
  195: 	    Tweak the rules on prefix-lengths in --dhcp-range for
  196: 	    IPv6. The new rule is that the specified prefix length
  197: 	    must be larger than or equal to the prefix length of the
  198: 	    corresponding address on the local interface. 
  199: 
  200: 
  201: version 2.67
  202: 	    Fix crash if upstream server returns SERVFAIL when
  203: 	    --conntrack in use. Thanks to Giacomo Tazzari for finding
  204: 	    this and supplying the patch. 
  205: 
  206: 	    Repair regression in 2.64. That release stopped sending
  207: 	    lease-time information in the reply to DHCPINFORM
  208: 	    requests, on the correct grounds that it was a standards
  209: 	    violation. However, this broke the dnsmasq-specific
  210: 	    dhcp_lease_time utility. Now, DHCPINFORM returns
  211: 	    lease-time only if it's specifically requested
  212: 	    (maintaining standards) and the dhcp_lease_time utility
  213: 	    has been taught to ask for it (restoring functionality). 
  214: 
  215: 	    Fix --dhcp-match, --dhcp-vendorclass and --dhcp-userclass
  216: 	    to work with BOOTP and well as DHCP. Thanks to Peter
  217: 	    Korsgaard for spotting the problem. 
  218: 
  219: 	    Add --synth-domain. Thanks to Vishvananda Ishaya for
  220: 	    suggesting this.
  221: 
  222: 	    Fix failure to compile ipset.c if old kernel headers are
  223: 	    in use. Thanks to Eugene Rudoy for pointing this out.
  224: 
  225: 	    Handle IPv4 interface-address labels in Linux. These are
  226: 	    often used to emulate the old IP-alias addresses. Before,
  227: 	    using --interface=eth0 would service all the addresses of
  228: 	    eth0, including ones configured as aliases, which appear
  229: 	    in ifconfig as eth0:0. Now, only addresses with the label
  230: 	    eth0 are active. This is not backwards compatible: if you
  231: 	    want to continue to bind the aliases too, you need to add
  232: 	    eg. --interface=eth0:0 to the config. 
  233: 	
  234: 	    Fix "failed to set SO_BINDTODEVICE on DHCP socket: Socket 
  235: 	    operation on non-socket" error on startup with
  236: 	    configurations which have exactly one --interface option
  237: 	    and do RA but _not_ DHCPv6. Thanks to Trever Adams for the
  238: 	    bug report.
  239: 
  240: 	    Generalise --interface-name to cope with IPv6 addresses
  241: 	    and multiple addresses per interface per address family.
  242: 
  243: 	    Fix option parsing for --dhcp-host, which was generating a
  244: 	    spurious error when all seven possible items were
  245: 	    included. Thanks to Zhiqiang Wang for the bug report.
  246: 
  247: 	    Remove restriction on prefix-length in --auth-zone. Thanks
  248: 	    to Toke Hoiland-Jorgensen for suggesting this.
  249: 
  250: 	    Log when the maximum number of concurrent DNS queries is
  251: 	    reached. Thanks to Marcelo Salhab Brogliato for the patch.
  252: 
  253: 	    If wildcards are used in --interface, don't assume that 
  254: 	    there will only ever be one available interface for DHCP
  255: 	    just because there is one at start-up. More may appear, so
  256: 	    we can't use SO_BINDTODEVICE. Thanks to Natrio for the bug
  257: 	    report. 
  258: 
  259: 	    Increase timeout/number of retries in TFTP to accomodate
  260: 	    AudioCodes Voice Gateways doing streaming writes to flash.
  261: 	    Thanks to Damian Kaczkowski for spotting the problem.
  262: 
  263: 	    Fix crash with empty DHCP string options when adding zero
  264: 	    terminator. Thanks to Patrick McLean for the bug report.
  265: 
  266: 	    Allow hostnames to start with a number, as allowed in
  267: 	    RFC-1123. Thanks to Kyle Mestery for the patch. 
  268: 
  269: 	    Fixes to DHCP FQDN option handling: don't terminate FQDN
  270: 	    if domain not known and allow a FQDN option with blank
  271: 	    name to request that a FQDN option is returned in the
  272: 	    reply. Thanks to Roy Marples for the patch.
  273: 
  274: 	    Make --clear-on-reload apply to setting upstream servers
  275: 	    via DBus too.
  276: 
  277: 	    When the address which triggered the construction of an
  278: 	    advertised IPv6 prefix disappears, continue to advertise 
  279: 	    the prefix for up to 2 hours, with the preferred lifetime
  280: 	    set to zero. This satisfies RFC 6204 4.3 L-13 and makes
  281: 	    things work better if a prefix disappears without being
  282: 	    deprecated first. Thanks to Uwe Schindler for persuasively
  283: 	    arguing for this.
  284: 
  285: 	    Fix MAC address enumeration on *BSD. Thanks to Brad Smith
  286: 	    for the bug report.
  287: 
  288: 	    Support RFC-4242 information-refresh-time options in the 
  289: 	    reply to DHCPv6 information-request. The lease time of the
  290:             smallest valid dhcp-range is sent. Thanks to Uwe Schindler 
  291: 	    for suggesting this.
  292: 
  293: 	    Make --listen-address higher priority than --except-interface
  294: 	    in all circumstances. Thanks to Thomas Hood for the bugreport.
  295: 
  296: 	    Provide independent control over which interfaces get TFTP 
  297: 	    service. If enable-tftp is given a list of interfaces, then TFTP 
  298: 	    is provided on those. Without the list, the previous behaviour
  299: 	    (provide TFTP to the same interfaces we provide DHCP to) 
  300: 	    is retained. Thanks to Lonnie Abelbeck for the suggestion.
  301: 
  302: 	    Add --dhcp-relay config option. Many thanks to vtsl.net
  303: 	    for sponsoring this development.
  304: 
  305: 	    Fix crash with empty tag: in --dhcp-range. Thanks to
  306: 	    Kaspar Schleiser for the bug report.
  307: 
  308: 	    Add "baseline" and "bloatcheck" makefile targets, for 
  309: 	    revealing size changes during development. Thanks to
  310: 	    Vladislav Grishenko for the patch. 
  311: 
  312: 	    Cope with DHCPv6 clients which send REQUESTs without
  313: 	    address options - treat them as SOLICIT with rapid commit.
  314: 
  315: 	    Support identification of clients by MAC address in
  316: 	    DHCPv6. When using a relay, the relay must support RFC
  317: 	    6939 for this to work. It always works for directly
  318: 	    connected clients. Thanks to Vladislav Grishenko
  319: 	    for prompting this feature.
  320: 	    
  321: 	    Remove the rule for constructed DHCP ranges that the local
  322: 	    address must be either the first or last address in the
  323: 	    range. This was originally to avoid SLAAC addresses, but
  324: 	    we now explicitly autoconfig and privacy addresses instead.  
  325: 
  326: 	    Update Polish translation. Thanks to Jan Psota.
  327: 
  328: 	    Fix problem in DHCPv6 vendorclass/userclass matching
  329: 	    code. Thanks to Tanguy Bouzeloc for the patch.
  330: 
  331:  	    Update Spanish transalation. Thanks to Vicente Soriano.
  332: 
  333: 	    Add --ra-param option. Thanks to Vladislav Grishenko for
  334: 	    inspiration on this.
  335: 
  336: 	    Add --add-subnet configuration, to tell upstream DNS
  337: 	    servers where the original client is. Thanks to DNSthingy
  338: 	    for sponsoring this feature.
  339: 
  340: 	    Add --quiet-dhcp, --quiet-dhcp6 and --quiet-ra. Thanks to
  341: 	    Kevin Darbyshire-Bryant for the initial patch.
  342: 
  343: 	    Allow A/AAAA records created by --interface-name to be the
  344: 	    target of --cname. Thanks to Hadmut Danisch for the
  345: 	    suggestion. 
  346: 
  347: 	    Avoid treating a --dhcp-host which has an IPv6 address
  348: 	    as eligable for use with DHCPv4 on the grounds that it has
  349: 	    no address, and vice-versa. Thanks to Yury Konovalov for
  350: 	    spotting the problem.
  351: 
  352: 	    Do a better job caching dangling CNAMEs. Thanks to Yves
  353: 	    Dorfsman for spotting the problem.
  354: 
  355:  
  356: version 2.66
  357:             Add the ability to act as an authoritative DNS
  358:             server. Dnsmasq can now answer queries from the wider 'net
  359:             with local data, as long as the correct NS records are set
  360:             up. Only local data is provided, to avoid creating an open
  361:             DNS relay. Zone transfer is supported, to allow secondary
  362:             servers to be configured.
  363: 
  364: 	    Add "constructed DHCP ranges" for DHCPv6. This is intended
  365: 	    for IPv6 routers which get prefixes dynamically via prefix
  366: 	    delegation. With suitable configuration, stateful DHCPv6
  367: 	    and RA can happen automatically as prefixes are delegated
  368: 	    and then deprecated, without having  to re-write the
  369: 	    dnsmasq configuration file or restart the daemon. Thanks to
  370: 	    Steven Barth for extensive testing and development work on
  371: 	    this idea.
  372: 
  373: 	    Fix crash on startup on Solaris 11. Regression probably
  374: 	    introduced in 2.61.  Thanks to Geoff Johnstone for the
  375: 	    patch.
  376: 
  377: 	    Add code to make behaviour for TCP DNS requests that same
  378: 	    as for UDP requests, when a request arrives for an allowed 
  379: 	    address, but via a banned interface. This change is only
  380: 	    active on Linux, since the relevant API is missing (AFAIK)
  381: 	    on other platforms. Many thanks to Tomas Hozza for
  382: 	    spotting the problem, and doing invaluable discovery of
  383: 	    the obscure and undocumented API required for the solution.
  384: 
  385: 	    Don't send the default DHCP option advertising dnsmasq as
  386: 	    the local DNS server if dnsmasq is configured to not act
  387: 	    as DNS server, or it's configured to a non-standard port.
  388:  
  389:             Add DNSMASQ_CIRCUIT_ID, DNSMASQ_SUBCRIBER_ID,
  390:             DNSMASQ_REMOTE_ID variables to the environment of the
  391:             lease-change script (and the corresponding Lua). These hold
  392:             information inserted into the DHCP request by a DHCP relay
  393:             agent. Thanks to Lakefield Communications for providing a
  394:             bounty for this addition.
  395:  
  396: 	    Fixed crash, introduced in 2.64, whilst handling DHCPv6
  397: 	    information-requests with some common configurations.
  398: 	    Thanks to Robert M. Albrecht for the bug report and 
  399: 	    chasing the problem.
  400: 
  401: 	    Add --ipset option. Thanks to Jason A. Donenfeld for the 
  402: 	    patch.
  403: 
  404: 	    Don't erroneously reject some option names in --dhcp-match
  405: 	    options. Thanks to Benedikt Hochstrasser for the bug report.
  406: 	    
  407: 	    Allow a trailing '*' wildcard in all interface-name
  408: 	    configurations. Thanks to Christian Parpart for the patch.
  409: 
  410: 	    Handle the situation where libc headers define
  411: 	    SO_REUSEPORT, but the kernel in use doesn't, to cope with
  412: 	    the introduction of this option to Linux. Thanks to Rich
  413: 	    Felker for the bug report.
  414: 
  415: 	    Update Polish translation. Thanks to Jan Psota.
  416: 
  417: 	    Fix crash if the configured DHCP lease limit is
  418: 	    reached. Regression occurred in 2.61. Thanks to Tsachi for
  419: 	    the bug report. 
  420: 	    
  421: 	    Update the French translation. Thanks to Gildas le Nadan.
  422: 
  423:   
  424: version 2.65
  425: 	    Fix regression which broke forwarding of queries sent via
  426: 	    TCP which are not for A and AAAA and which were directed to
  427: 	    non-default servers. Thanks to Niax for the bug report.
  428: 
  429: 	    Fix failure to build with DHCP support excluded. Thanks to 
  430: 	    Gustavo Zacarias for the patch.
  431: 	    
  432: 	    Fix nasty regression in 2.64 which completely broke cacheing.
  433: 
  434: 
  435: version 2.64
  436:             Handle DHCP FQDN options with all flag bits zero and
  437:             --dhcp-client-update set. Thanks to Bernd Krumbroeck for
  438:             spotting the problem.
  439: 
  440: 	    Finesse the check for /etc/hosts names which conflict with
  441: 	    DHCP names. Previously a name/address pair in /etc/hosts
  442: 	    which didn't match the name/address of a DHCP lease would
  443: 	    generate a warning. Now that only happesn if there is not
  444: 	    also a match. This allows multiple addresses for a name in 
  445: 	    /etc/hosts with one of them assigned via DHCP.
  446: 
  447: 	    Fix broken vendor-option processing for BOOTP. Thanks to
  448: 	    Hans-Joachim Baader for the bug report.
  449: 
  450: 	    Don't report spurious netlink errors, regression in
  451: 	    2.63. Thanks to Vladislav Grishenko for the patch.
  452: 
  453: 	    Flag DHCP or DHCPv6 in starup logging. Thanks to 
  454: 	    Vladislav Grishenko for the patch.
  455: 
  456: 	    Add SetServersEx method in DBus interface. Thanks to Dan
  457: 	    Williams for the patch.
  458: 
  459: 	    Add SetDomainServers method in DBus interface. Thanks to
  460: 	    Roy Marples for the patch.
  461: 
  462: 	    Fix build with later Lua libraries. Thansk to Cristian
  463: 	    Rodriguez for the patch.
  464: 
  465: 	    Add --max-cache-ttl option. Thanks to Dennis Kaarsemaker
  466: 	    for the patch.
  467: 
  468: 	    Fix breakage of --host-record parsing, resulting in
  469: 	    infinte loop at startup. Regression in 2.63. Thanks to
  470: 	    Haim Gelfenbeyn for spotting this.
  471: 
  472: 	    Set SO_REUSEADDRESS and SO_V6ONLY options on the DHCPv6
  473: 	    socket, this allows multiple instances of dnsmasq on a
  474: 	    single machine, in the same way as for DHCPv4. Thanks to
  475: 	    Gene Czarcinski and Vladislav Grishenko for work on this.
  476: 
  477: 	    Fix DHCPv6 to do access control correctly when it's 
  478: 	    configured with --listen-address. Thanks to
  479: 	    Gene Czarcinski for sorting this out. 
  480: 
  481: 	    Add a "wildcard" dhcp-range which works for any IPv6
  482: 	    subnet, --dhcp-range=::,static Useful for Stateless 
  483: 	    DHCPv6. Thanks to Vladislav Grishenko for the patch.
  484: 
  485: 	    Don't include lease-time in DHCPACK replies to DHCPINFORM
  486: 	    queries, since RFC-2131 says we shouldn't. Thanks to
  487: 	    Wouter Ibens for pointing this out.  
  488: 
  489: 	    Makefile tweak to do dependency checking on header files.
  490: 	    Thanks to Johan Peeters for the patch.
  491: 
  492: 	    Check interface for outgoing unsolicited router 
  493: 	    advertisements, rather than relying on interface address 
  494: 	    configuration. Thanks to Gene Czarinski for the patch.
  495: 
  496: 	    Handle better attempts to transmit on interfaces which are
  497: 	    still doing DAD, and specifically do not just transmit
  498: 	    without setting source address and interface, since this
  499: 	    can cause very puzzling effects when a router
  500: 	    advertisement goes astray. Thanks again to Gene Czarinski.
  501: 
  502: 	    Get RA timers right when there is more than one
  503: 	    dhcp-range on a subnet.
  504: 	    
  505: 
  506: version 2.63
  507:             Do duplicate dhcp-host address check in --test mode.
  508: 
  509: 	    Check that tftp-root directories are accessible before
  510: 	    start-up. Thanks to Daniel Veillard for the initial patch.
  511: 
  512: 	    Allow more than one --tfp-root flag. The per-interface
  513: 	    stuff is pointless without that.
  514: 
  515: 	    Add --bind-dynamic. A hybrid mode between the default and
  516: 	    --bind-interfaces which copes with dynamically created
  517: 	    interfaces. 
  518: 	    
  519: 	    A couple of fixes to the build system for Android. Thanks
  520: 	    to Metin Kaya for the patches.
  521: 
  522: 	    Remove the interface:<interface> argument in --dhcp-range, and
  523: 	    the interface argument to --enable-tftp. These were a
  524: 	    still-born attempt to allow automatic isolated
  525: 	    configuration by libvirt, but have never (to my knowledge)
  526: 	    been used, had very strange semantics, and have been
  527: 	    superceded by other mechanisms. 
  528: 
  529: 	    Fixed bug logging filenames when duplicate dhcp-host
  530: 	    addresses are found. Thanks to John Hanks for the patch.
  531: 
  532: 	    Fix regression in 2.61 which broke caching of CNAME
  533: 	    chains. Thanks to Atul Gupta for the bug report.
  534: 
  535: 	    Allow the target of a --cname flag to be another --cname.
  536: 
  537:             Teach DHCPv6 about the RFC 4242 information-refresh-time
  538: 	    option, and add parsing if the minutes, hours and days
  539: 	    format for options. Thanks to Francois-Xavier Le Bail for
  540: 	    the suggestion.
  541: 
  542: 	    Allow "w" (for week) as multiplier in lease times, as well
  543: 	    as seconds, minutes, hours and days.  Álvaro Gámez Machado 
  544: 	    spotted the ommission.
  545:  
  546: 	    Update French translation. Thanks to Gildas Le Nadan.
  547: 
  548: 	    Allow a DBus service name to be given with --enable-dbus
  549: 	    which overrides the default,
  550: 	    uk.org.thekelleys.dnsmasq. Thanks to Mathieu
  551: 	    Trudel-Lapierre for the patch. 
  552: 
  553: 	    Set the "prefix on-link" bit in Router
  554: 	    Advertisements. Thanks to Gui Iribarren for the patch.
  555: 
  556: 
  557: version 2.62
  558:             Update German translation. Thanks to Conrad Kostecki.
  559: 
  560: 	    Cope with router-solict packets wich don't have a valid 
  561: 	    source address. Thanks to Vladislav Grishenko for the patch.
  562: 
  563: 	    Fixed bug which caused missing periodic router
  564: 	    advertisements with some configurations. Thanks to
  565: 	    Vladislav Grishenko for the patch.
  566: 
  567: 	    Fixed bug which broke DHCPv6/RA with prefix lengths 
  568: 	    which are not divisible by 8. Thanks to Andre Coetzee 
  569: 	    for spotting this.
  570: 
  571: 	    Fix non-response to router-solicitations when
  572: 	    router-advertisement configured, but DHCPv6 not
  573: 	    configured. Thanks to Marien Zwart for the patch.
  574: 
  575: 	    Add --dns-rr, to allow arbitrary DNS resource records.
  576: 
  577: 	    Fixed bug which broke RA scheduling when an interface had
  578: 	    two addresses in the same network. Thanks to Jim Bos for
  579: 	    his help nailing this.
  580: 
  581: version 2.61
  582: 	    Re-write interface discovery code on *BSD to use
  583: 	    getifaddrs. This is more portable, more straightforward,
  584: 	    and allows us to find the prefix length for IPv6
  585: 	    addresses.
  586: 
  587: 	    Add ra-names, ra-stateless and slaac keywords for DHCPv6.
  588: 	    Dnsmasq can now synthesise AAAA records for dual-stack 
  589:             hosts which get IPv6 addresses via SLAAC. It is also now 
  590: 	    possible to use SLAAC and stateless DHCPv6, and to 
  591: 	    tell clients to use SLAAC addresses as well as DHCP ones.
  592: 	    Thanks to Dave Taht for help with this.
  593: 
  594: 	    Add --dhcp-duid to allow DUID-EN uids to be used.
  595: 
  596: 	    Explicity send DHCPv6 replies to the correct port, instead
  597: 	    of relying on clients to send requests with the correct
  598: 	    source address, since at least one client in the wild gets
  599: 	    this wrong. Thanks to Conrad Kostecki for help tracking
  600: 	    this down.
  601: 
  602: 	    Send a preference value of 255 in DHCPv6 replies when 
  603: 	    --dhcp-authoritative is in effect. This tells clients not
  604: 	    to wait around for other DHCP servers.
  605: 
  606: 	    Better logging of DHCPv6 options.
  607: 
  608: 	    Add --host-record. Thanks to Rob Zwissler for the
  609: 	    suggestion.
  610: 
  611: 	    Invoke the DHCP script with action "tftp" when a TFTP file
  612: 	    transfer completes. The size of the file, address to which
  613: 	    it was sent and complete pathname are supplied. Note that
  614: 	    version 2.60 introduced some script incompatibilties
  615: 	    associated with DHCPv6, and this is a further change. To
  616: 	    be safe, scripts should ignore unknown actions, and if
  617: 	    not IPv6-aware, should exit if the environment
  618: 	    variable DNSMASQ_IAID is set. The use-case for this is
  619: 	    to track netboot/install.  Suggestion from Shantanu
  620: 	    Gadgil.
  621: 
  622: 	    Update contrib/port-forward/dnsmasq-portforward to reflect
  623: 	    the above.
  624: 
  625: 	    Set the environment variable DNSMASQ_LOG_DHCP when running
  626: 	    the script id --log-dhcp is in effect, so that script can
  627: 	    taylor their logging verbosity. Suggestion from Malte
  628: 	    Forkel.
  629: 	    
  630: 	    Arrange that addresses specified with --listen-address
  631: 	    work even if there is no interface carrying the
  632: 	    address. This is chiefly useful for IPv4 loopback
  633: 	    addresses, where any address in 127.0.0.0/8 is a valid
  634: 	    loopback address, but normally only 127.0.0.1 appears on
  635: 	    the lo interface. Thanks to Mathieu Trudel-Lapierre for
  636: 	    the idea and initial patch. 
  637: 
  638: 	    Fix crash, introduced in 2.60, when a DHCPINFORM is
  639: 	    received from a network which has no valid dhcp-range.
  640: 	    Thanks to Stephane Glondu for the bug report.
  641: 
  642: 	    Add a new DHCP lease time keyword, "deprecated" for
  643: 	    --dhcp-range. This is only valid for IPv6, and sets the
  644: 	    preffered lease time for both DHCP and RA to zero. The
  645: 	    effect is that clients can continue to use the address 
  646: 	    for existing connections, but new connections will use
  647:             other addresses, if they exist. This makes hitless
  648: 	    renumbering at least possible.
  649: 
  650: 	    Fix bug in address6_available() which caused DHCPv6 lease
  651: 	    aquisition to fail if more than one dhcp-range in use.
  652: 
  653: 	    Provide RDNSS and DNSSL data in router advertisements,
  654: 	    using the settings provided for DHCP options
  655: 	    option6:domain-search and option6:dns-server.
  656: 
  657: 	    Tweak logo/favicon.ico to add some transparency. Thanks to
  658: 	    SamLT for work on this.
  659: 	    
  660: 	    Don't cache data from non-recursive nameservers, since it
  661: 	    may erroneously look like a valid CNAME to a non-exitant
  662: 	    name. Thanks to Ben Winslow for finding this.
  663: 
  664: 	    Call SO_BINDTODEVICE on the DHCP socket(s) when doing DHCP
  665: 	    on exactly one interface and --bind-interfaces is set. This 
  666: 	    makes the OpenStack use-case of one dnsmasq per virtual
  667: 	    interface work. This is only available on Linux; it's not
  668: 	    supported on other platforms. Thanks to Vishvananda Ishaya
  669: 	    and the OpenStack team for the suggestion.
  670: 
  671: 	    Updated French translation. Thanks to Gildas Le Nadan.
  672: 
  673: 	    Give correct from-cache answers to explict CNAME queries.
  674: 	    Thanks to Rob Zwissler for spotting this.
  675: 	    
  676: 	    Add --tftp-lowercase option. Thanks to Oliver Rath for the
  677: 	    patch. 
  678: 
  679: 	    Ensure that the DBus DhcpLeaseUpdated events are generated
  680: 	    when a lease goes through INIT_REBOOT state, even if the
  681: 	    dhcp-script is not in use. Thanks to Antoaneta-Ecaterina
  682: 	    Ene for the patch.
  683: 
  684: 	    Fix failure of TFTP over IPv4 on OpenBSD platform. Thanks
  685: 	    to Brad Smith for spotting this.
  686: 	    
  687: 
  688: version 2.60
  689:             Fix compilation problem in Mac OS X Lion. Thanks to Olaf
  690:             Flebbe for the patch.
  691: 
  692: 	    Fix DHCP when using --listen-address with an IP address
  693: 	    which is not the primary address of an interface.
  694: 
  695: 	    Add --dhcp-client-update option.
  696: 
  697: 	    Add Lua integration. Dnsmasq can now execute a DHCP
  698: 	    lease-change script written in Lua. This needs to be
  699: 	    enabled at compile time by setting HAVE_LUASCRIPT in 
  700: 	    src/config.h or running "make COPTS=-DHAVE_LUASCRIPT"
  701: 	    Thanks to Jan-Piet Mens for the idea and proof-of-concept 
  702: 	    implementation.
  703: 	    
  704: 	    Tidied src/config.h to distinguish between
  705: 	    platform-dependent compile-time options which are selected
  706: 	    automatically, and builder-selectable compile time
  707: 	    options. Document the latter better, and describe how to
  708: 	    set them from the make command line.
  709: 
  710: 	    Tidied up IPPROTO_IP/SOL_IP (and IPv6 equivalent)
  711: 	    confusion. IPPROTO_IP works everywhere now.
  712: 	    
  713: 	    Set TOS on DHCP sockets, this improves things on busy
  714: 	    wireless networks. Thanks to Dave Taht for the patch.
  715: 
  716: 	    Determine VERSION automatically based on git magic:
  717: 	    release tags or hash values.
  718: 
  719: 	    Improve start-up speed when reading large hosts files 
  720: 	    containing many distinct addresses.
  721: 
  722: 	    Fix problem if dnsmasq is started without the stdin,
  723: 	    stdout and stderr file descriptors open. This can manifest
  724: 	    itself as 100% CPU use. Thanks to Chris Moore for finding
  725: 	    this.
  726: 
  727: 	    Fix shell-scripting bug in bld/pkg-wrapper. Thanks to 
  728: 	    Mark Mitchell for the patch.
  729: 
  730: 	    Allow the TFP server or boot server in --pxe-service, to
  731: 	    be a domain name instead of an IP address. This allows for
  732: 	    round-robin	to multiple servers, in the same way as
  733: 	    --dhcp-boot. A good suggestion from Cristiano Cumer.
  734: 
  735: 	    Support BUILDDIR variable in the Makefile. Allows builds 
  736: 	    for multiple archs from the same source tree with eg.
  737: 	    make BUILDDIR=linux             (relative to dnsmasq tree)
  738: 	    make BUILDDIR=/tmp/openbsd      (absolute path)
  739: 	    If BUILDDIR is not set, compilation happens in the src
  740: 	    directory, as before. Suggestion from Mark Mitchell.
  741: 
  742: 	    Support DHCPv6. Support is there for the sort of things
  743: 	    the existing v4 server does, including tags, options, 
  744: 	    static addresses and relay support. Missing is prefix 
  745: 	    delegation, which is probably not required in the dnsmasq
  746: 	    niche, and an easy way to accept prefix delegations from
  747: 	    an upstream DHCPv6 server, which is. Future plans include
  748: 	    support for DHCPv6 router option and MAC address option
  749: 	    (to make selecting clients by MAC address work like IPv4).
  750: 	    These will be added as the standards mature.
  751: 	    This code has been tested, but this is the first release,
  752: 	    so don't bet the farm on it just yet. Many thanks to all 
  753: 	    testers who have got it this far.
  754: 
  755: 	    Support IPv6 router advertisements. This is a
  756: 	    simple-minded implementation, aimed at providing the
  757: 	    vestigial RA needed to go alongside IPv6. Is picks up
  758: 	    configuration from the DHCPv6 conf, and should just need
  759: 	    enabling with --enable-ra.   
  760: 
  761: 	    Fix long-standing wrinkle with --localise-queries that
  762: 	    could result in wrong answers when DNS packets arrive
  763: 	    via an interface other than the expected one. Thanks to 
  764: 	    Lorenzo Milesi and John Hanks for spotting this one.
  765:  
  766:             Update French translation. Thanks to Gildas Le Nadan.
  767: 
  768: 	    Update Polish translation. Thanks to Jan Psota.
  769: 
  770: 
  771: version 2.59
  772:             Fix regression in 2.58 which caused failure to start up
  773:             with some combinations of dnsmasq config and IPv6 kernel
  774:             network config. Thanks to Brielle Bruns for the bug
  775:             report.
  776: 
  777:             Improve dnsmasq's behaviour when network interfaces are
  778:             still doing duplicate address detection (DAD). Previously,
  779:             dnsmasq would wait up to 20 seconds at start-up for the
  780:             DAD state to terminate. This is broken for bridge
  781:             interfaces on recent Linux kernels, which don't start DAD
  782:             until the bridge comes up, and so can take arbitrary
  783:             time. The new behaviour lets dnsmasq poll for an arbitrary
  784:             time whilst providing service on other interfaces. Thanks
  785:             to Stephen Hemminger for pointing out the problem.
  786: 
  787: 
  788: version 2.58
  789: 	    Provide a definition of the SA_SIZE macro where it's 
  790: 	    missing. Fixes build failure on openBSD.
  791: 
  792: 	    Don't include a zero terminator at the end of messages
  793: 	    sent to /dev/log when /dev/log is a datagram socket.
  794: 	    Thanks to Didier Rabound for spotting the problem.
  795: 
  796: 	    Add --dhcp-sequential-ip flag, to force allocation of IP
  797: 	    addresses in ascending order. Note that the default
  798: 	    pseudo-random mode is in general better but some
  799: 	    server-deployment applications need this.
  800: 
  801: 	    Fix problem where a server-id of 0.0.0.0 is sent to a
  802: 	    client when a dhcp-relay is in use if a client renews a
  803: 	    lease after dnsmasq restart and before any clients on the
  804: 	    subnet get a new lease. Thanks to Mike Ruiz for assistance
  805: 	    in chasing this one down. 
  806: 
  807: 	    Don't return NXDOMAIN to an AAAA query if we have CNAME
  808: 	    which points to an A record only: NODATA is the correct
  809: 	    reply in this case. Thanks to Tom Fernandes for spotting
  810: 	    the problem.
  811: 
  812: 	    Relax the need to supply a netmask in --dhcp-range for
  813: 	    networks which use a DHCP relay. Whilst this is still
  814: 	    desireable, in the absence of a netmask dnsmasq will use
  815: 	    a default based on the class (A, B, or C) of the address. 
  816: 	    This should at least remove a cause of mysterious failure 
  817: 	    for people using RFC1918 addresses and relays.
  818: 
  819: 	    Add support for Linux conntrack connection marking. If 
  820: 	    enabled with --conntrack, the connection mark for incoming
  821: 	    DNS queries will be copied  to the outgoing connections
  822: 	    used to answer those queries. This allows clever firewall
  823: 	    and accounting stuff. Only available if dnsmasq is
  824: 	    compiled with HAVE_CONNTRACK and adds a dependency on 
  825: 	    libnetfilter-conntrack. Thanks to Ed Wildgoose for the
  826: 	    initial idea, testing and sponsorship of this function.
  827: 
  828: 	    Provide a sane error message when someone attempts to 
  829: 	    match a tag in --dhcp-host.
  830: 
  831: 	    Tweak the behaviour of --domain-needed, to avoid problems
  832: 	    with recursive nameservers downstream of dnsmasq. The new
  833: 	    behaviour only stops A and AAAA queries, and returns
  834: 	    NODATA rather than NXDOMAIN replies. 
  835: 
  836: 	    Efficiency fix for very large DHCP configurations, thanks
  837: 	    to James Gartrell and Mike Ruiz for help with this. 
  838: 
  839: 	    Allow the TFTP-server address in --dhcp-boot to be a
  840: 	    domain-name which is looked up in /etc/hosts. This can 
  841: 	    give multiple IP addresses which are used round-robin,
  842: 	    thus doing TFTP server load-balancing. Thanks to Sushil
  843: 	    Agrawal for the patch.
  844: 
  845: 	    When two tagged dhcp-options for a particular option
  846: 	    number are both valid, use the one which is valid without
  847: 	    a tag from the dhcp-range. Allows overriding of the value
  848: 	    of a DHCP option for a particular host as well as
  849: 	    per-network values.  So 
  850: 	    --dhcp-range=set:interface1,......
  851: 	    --dhcp-host=set:myhost,.....  
  852: 	    --dhcp-option=tag:interface1,option:nis-domain,"domain1" 
  853: 	    --dhcp-option=tag:myhost,option:nis-domain,"domain2" 
  854: 	    will set the NIS-domain to domain1 for hosts in the range, but
  855:        	    override that to domain2 for a particular host.
  856: 
  857: 	    Fix bug which resulted in truncated files and timeouts for
  858: 	    some TFTP transfers. The bug only occurs with netascii
  859: 	    transfers and needs an unfortunate relationship between
  860: 	    file size, blocksize and the number of newlines in the
  861: 	    last block before it manifests itself. Many thanks to 
  862: 	    Alkis Georgopoulos for spotting the problem and providing
  863: 	    a comprehensive test-case. 
  864: 
  865: 	    Fix regression in TFTP server on *BSD platforms introduced
  866: 	    in version 2.56, due to confusion with sockaddr
  867: 	    length. Many thanks to Loic Pefferkorn for finding this.
  868: 
  869: 	    Support scope-ids in IPv6 addresses of nameservers from
  870: 	    /etc/resolv.conf and in --server options. Eg
  871: 	    nameserver fe80::202:a412:4512:7bbf%eth0 or
  872: 	    server=fe80::202:a412:4512:7bbf%eth0. Thanks to 
  873: 	    Michael Stapelberg for the suggestion.
  874: 
  875: 	    Update Polish translation, thanks to Jan Psota.
  876: 
  877: 	    Update French translation. Thanks to Gildas Le Nadan.
  878: 
  879: 
  880: version 2.57
  881: 	    Add patches to allow build under Android.
  882: 
  883: 	    Provide our own header for the DNS protocol, rather than
  884: 	    relying on arpa/nameser.h. This has proved more or less
  885: 	    defective over the years and the final straw is that it's
  886: 	    effectively empty on Android.
  887: 
  888: 	    Fix regression in 2.56 which caused hex constants in
  889: 	    configuration to be rejected if they contain the '*'
  890: 	    wildcard.
  891: 
  892: 	    Correct wrong casts of arguments to ctype.h functions,
  893: 	    isdigit(), isxdigit() etc. Thanks to Matthias Andree for
  894: 	    spotting this.
  895: 
  896: 	    Allow build with IDN support independently from i18n. 
  897:             IDN support continues to be included automatically 
  898: 	    when i18n is included. 
  899:             'make COPTS=-DHAVE_IDN' is the magic incantation. 
  900: 
  901: 	    Modify check on extraneous command line junk (added in
  902: 	    2.56) so that it doesn't complain about extra _empty_ 
  903: 	    arguments. Otherwise this breaks libvirt.
  904: 
  905: 
  906: version 2.56
  907:             Add a patch to allow dnsmasq to get interface names right in a
  908:             Solaris zone. Thanks to Dj Padzensky for this.
  909: 
  910: 	    Improve data-type parsing heuristics so that
  911: 	    --dhcp-option=option:domain-search,. 
  912: 	    treats the value as a string and not an IP address.
  913: 	    Thanks to Clemens Fischer for spotting that.
  914: 
  915: 	    Add IPv6 support to the TFTP server. Many thanks to Jan 
  916: 	    'RedBully' Seiffert for the patches.
  917: 	    
  918: 	    Log DNS queries at level LOG_INFO, rather then
  919: 	    LOG_DEBUG. This makes things consistent with DHCP
  920: 	    logging. Thanks to Adam Pribyl for spotting the problem.
  921: 
  922:             Ensure that dnsmasq terminates cleanly when using
  923:             --syslog-async even if it cannot make a connection to the
  924:             syslogd.
  925: 
  926: 	    Add --add-mac option. This is to support currently 
  927: 	    experimental DNS filtering facilities. Thanks to Benjamin
  928: 	    Petrin for the orignal patch. 
  929: 
  930: 	    Fix bug which meant that tags were ignored in dhcp-range
  931: 	    configuration specifying PXE-proxy service. Thanks to
  932: 	    Cristiano Cumer for spotting this.
  933: 
  934: 	    Raise an error if there is extra junk, not part of an
  935:  	    option, on the command line.
  936: 
  937: 	    Flag a couple of log messages in cache.c as coming from
  938: 	    the DHCP subsystem. Thanks to Olaf Westrik for the patch.
  939: 
  940: 	    Omit timestamps from logs when a) logging to stderr and 
  941: 	    b) --keep-in-forground is set. The logging facility on the
  942: 	    other end of stderr can be assumned to supply them. Thanks
  943: 	    to John Hallam for the patch.
  944: 
  945: 	    Don't complain about strings longer than 255 characters in
  946: 	    --txt-record, just split the long strings into 255
  947: 	    character chunks instead.
  948: 
  949: 	    Fix crash on double-free. This bug can only happen when
  950: 	    dhcp-script is in use and then only in rare circumstances
  951: 	    triggered by high DHCP transaction rate and a slow
  952: 	    script. Thanks to Ferenc Wagner for finding the problem.
  953: 
  954: 	    Only log that a file has been sent by TFTP after the
  955: 	    transfer has completed succesfully. 
  956: 
  957: 	    A good suggestion from Ferenc Wagner: extend
  958: 	    the --domain option to allow this sort of thing:
  959:             --domain=thekelleys.org.uk,192.168.0.0/24,local
  960: 	    which automatically creates
  961: 	    --local=/thekelleys.org.uk/
  962: 	    --local=/0.168.192.in-addr.arpa/ 
  963: 
  964: 	    Tighten up syntax checking of hex contants in the config
  965: 	    file.  Thanks to Fred Damen for spotting this.
  966: 
  967: 	    Add dnsmasq logo/icon, contributed by Justin Swift. Many
  968: 	    thanks for that.
  969: 
  970: 	    Never cache DNS replies which have the 'cd' bit set, or
  971: 	    which result from queries forwarded with the 'cd' bit
  972: 	    set. The 'cd' bit instructs a DNSSEC validating server
  973: 	    upstream to ignore signature failures and return replies
  974: 	    anyway. Without this change it's possible to pollute the
  975: 	    dnsmasq cache with bad data by making a query with the
  976: 	    'cd' bit set and subsequent queries would return this data
  977: 	    without its being marked as suspect. Thanks to Anders
  978: 	    Kaseorg for pointing out this problem.
  979: 
  980: 	    Add --proxy-dnssec flag, for compliance with RFC
  981: 	    4035. Dnsmasq will now clear the 'ad' bit in answers returned
  982: 	    from upstream validating nameservers unless this option is
  983: 	    set.
  984: 
  985: 	    Allow a filename of "-" for --conf-file to read
  986: 	    stdin. Suggestion from Timothy Redaelli.
  987: 
  988: 	    Rotate the order of SRV records in replies, to provide
  989: 	    round-robin load balancing when all the priorities are
  990: 	    equal. Thanks to Peter McKinney for the suggestion.	
  991: 
  992: 	    Edit
  993: 	    contrib/MacOSX-launchd/uk.org.thekelleys.dnsmasq.plist 
  994: 	    so that it doesn't log all queries to a file by
  995: 	    default. Thanks again to Peter McKinney.    
  996: 
  997: 	    By default, setting an IPv4 address for a domain but not
  998: 	    an IPv6 address causes dnsmasq to return
  999: 	    an NODATA reply for IPv6 (or vice-versa). So
 1000: 	    --address=/google.com/1.2.3.4 stops IPv6 queries for
 1001: 	    *google.com from being forwarded. Make it possible to
 1002: 	    override this behaviour by defining the sematics if the
 1003: 	    same domain appears in  both --server and --address.
 1004: 	    In that case, the --address has priority for the address
 1005: 	    family in which is appears, but the --server has priority
 1006: 	    of the address family which doesn't appear in --adddress  
 1007: 	    So:
 1008: 	    --address=/google.com/1.2.3.4
 1009: 	    --server=/google.com/#
 1010: 	    will return 1.2.3.4 for IPv4 queries for *.google.com but
 1011: 	    forward IPv6 queries to the normal upstream nameserver.
 1012: 	    Similarly when setting an IPv6 address
 1013: 	    only this will allow forwarding of IPv4 queries. Thanks to
 1014: 	    William for pointing out the need for this.
 1015: 
 1016: 	    Allow more than one --dhcp-optsfile and --dhcp-hostsfile
 1017: 	    and make them understand directories as arguments in the
 1018: 	    same way as --addn-hosts. Suggestion from John Hanks. 
 1019: 
 1020: 	    Ignore rebinding requests for leases we don't know
 1021: 	    about. Rebind is broadcast, so we might get to overhear a
 1022: 	    request meant for another DHCP server. NAKing this is
 1023: 	    wrong. Thanks to Brad D'Hondt for assistance with this.
 1024: 
 1025:             Fix cosmetic bug which produced strange output when
 1026:             dumping cache statistics with some configurations. Thanks
 1027:             to Fedor Kozhevnikov for spotting this.
 1028: 
 1029: 
 1030: version 2.55
 1031:             Fix crash when /etc/ethers is in use. Thanks to 
 1032: 	    Gianluigi Tiesi for finding this.
 1033: 
 1034: 	    Fix crash in netlink_multicast(). Thanks to Arno Wald for
 1035: 	    finding this one.
 1036: 
 1037: 	    Allow the empty domain "." in dhcp domain-search (119)
 1038: 	    options. 
 1039: 
 1040: 
 1041: version 2.54
 1042:             There is no version 2.54 to avoid confusion with 2.53,
 1043:             which incorrectly identifies itself as 2.54.
 1044: 
 1045: 
 1046: version 2.53
 1047:             Fix failure to compile on Debian/kFreeBSD. Thanks to 
 1048: 	    Axel Beckert and Petr Salinger.
 1049: 
 1050: 	    Fix code to avoid scary strict-aliasing warnings
 1051: 	    generated by gcc 4.4.
 1052: 	    
 1053: 	    Added FAQ entry warning about DHCP failures with Vista
 1054: 	    when firewalls block 255.255.255.255.
 1055: 	    
 1056: 	    Fixed bug which caused bad things to happen if a 
 1057: 	    resolv.conf file which exists is subsequently removed.
 1058: 	    Thanks to Nikolai Saoukh for the patch.
 1059: 
 1060: 	    Rationalised the DHCP tag system. Every configuration item
 1061: 	    which can set a tag does so by adding "set:<tag>" and
 1062: 	    every configuration item which is conditional on a tag is
 1063: 	    made so by "tag:<tag>". The NOT operator changes to '!',
 1064: 	    which is a bit more intuitive too. Dhcp-host directives
 1065: 	    can set more than one tag now. The old '#' NOT, 
 1066: 	    "net:" prefix and no-prefixes are still honoured, so 
 1067: 	    no existing config file needs to be changed, but 
 1068: 	    the documentation and new-style config files should be 
 1069: 	    much less confusing. 
 1070: 
 1071: 	    Added --tag-if to allow boolean operations on tags. 
 1072: 	    This allows complicated logic to be clearer and more 
 1073: 	    general. A great suggestion from Richard Voigt. 
 1074: 
 1075: 	    Add broadcast/unicast information to DHCP logging.
 1076: 
 1077: 	    Allow --dhcp-broadcast to be unconditional.
 1078: 
 1079: 	    Fixed incorrect behaviour with NOT <tag> conditionals in
 1080: 	    dhcp-options. Thanks to Max Turkewitz for assistance
 1081: 	    finding this.
 1082: 
 1083: 	    If we send vendor-class encapsulated options based on the
 1084: 	    vendor-class supplied by the client, and no explicit 
 1085: 	    vendor-class option is given, echo back the vendor-class
 1086: 	    from the client.
 1087:  
 1088: 	    Fix bug which stopped dnsmasq from matching both a
 1089: 	    circuitid and a remoteid. Thanks to Ignacio Bravo for
 1090: 	    finding this.
 1091: 
 1092: 	    Add --dhcp-proxy, which makes it possible to configure
 1093: 	    dnsmasq to use a DHCP relay agent as a full proxy, with
 1094: 	    all DHCP messages passing through the proxy. This is
 1095: 	    useful if the relay adds extra information to the packets
 1096: 	    it forwards, but cannot be configured with the RFC 5107 
 1097: 	    server-override option.
 1098: 
 1099: 	    Added interface:<iface name> part to dhcp-range. The
 1100: 	    semantics of this are very odd at first sight, but it
 1101: 	    allows a single line  of the form
 1102: 	        dhcp-range=interface:virt0,192.168.0.4,192.168.0.200
 1103: 	    to be added to dnsmasq configuration which then supplies
 1104: 	    DHCP and DNS services to that interface, without affecting
 1105: 	    what services are supplied to other interfaces and 
 1106: 	    irrespective of the existance or lack of 
 1107:                 interface=<interface> 
 1108:             lines elsewhere in the dnsmasq configuration. The idea is
 1109: 	    that such a line can be added automatically by libvirt
 1110: 	    or equivalent systems, without disturbing any manual
 1111: 	    configuration.
 1112: 
 1113: 	    Similarly to the above, allow --enable-tftp=<interface>
 1114: 
 1115: 	    Allow a TFTP root to be set separately for requests via
 1116: 	    different interfaces, --tftp-root=<path>,<interface>	     
 1117: 
 1118: 	    Correctly handle and log clashes between CNAMES and 
 1119: 	    DNS names being given to DHCP leases. This fixes a bug 
 1120: 	    which caused nonsense IP addresses to be logged. Thanks to 
 1121:             Sergei Zhirikov for finding and analysing the problem.
 1122: 
 1123: 	    Tweak flush_log so as to avoid leaving the log
 1124: 	    file in non-blocking mode. O_NONBLOCK is a property of the
 1125: 	    file, not the process/descriptor.
 1126: 
 1127: 	    Fix contrib/Solaris10/create_package
 1128: 	    (/usr/man -> /usr/share/man) Thanks to Vita Batrla.
 1129: 
 1130: 	    Fix a problem where, if a client got a lease, then went
 1131: 	    to another subnet and got another lease, then moved back,
 1132: 	    it couldn't resume the old lease, but would instead get 
 1133: 	    a new address. Thanks to Leonardo Rodrigues for spotting
 1134: 	    this and testing the fix.
 1135: 	    
 1136: 	    Fix weird bug which sometimes omitted certain characters
 1137: 	    from the start of quoted strings in dhcp-options. Thanks
 1138: 	    to Dayton Turner for spotting the problem.
 1139: 
 1140: 	    Add facility to redirect some domains to the standard
 1141: 	    upstream servers: this allows something like 
 1142: 	    --server=/google.com/1.2.3.4 --server=/www.google.com/#
 1143: 	    which will send queries for *.google.com to 1.2.3.4,
 1144: 	    except *www.google.com which will be forwarded as usual.
 1145: 	    Thanks to AJ Weber for prompting this addition.
 1146:  
 1147: 	    Improve the hash-algorithm used to generate IP addresses
 1148: 	    from MAC addresses during initial DHCP address
 1149: 	    allocation. This improves performance when large numbers
 1150: 	    of hosts with similar MAC addresses all try and get an IP
 1151: 	    address at the same time. Thanks to Paul Smith for his
 1152: 	    work on this.
 1153: 
 1154: 	    Tweak DHCP code so that --bridge-interface can be used to
 1155: 	    select which IP alias of an interface should be used for
 1156: 	    DHCP purposes on Linux. If eth0 has an alias eth0:dhcp
 1157: 	    then adding  --bridge-interface=eth0:dhcp,eth0 will use 
 1158: 	    the address of eth0:dhcp to determine the correct subnet 
 1159: 	    for DHCP address allocation. Thanks to Pawel Golaszewski 
 1160:             for prompting this and Eric Cooper for further testing.
 1161: 
 1162: 	    Add --dhcp-generate-names. Suggestion by Ferenc Wagner.
 1163: 
 1164: 	    Tweak DNS server selection algorithm when there is more
 1165: 	    than one server available for a domain, eg.
 1166:             --server=/mydomain/1.1.1.1
 1167:             --server=/mydomain/2.2.2.2
 1168: 	    Thanks to Alberto Cuesta-Canada for spotting a weakness
 1169: 	    here.
 1170: 
 1171: 	    Add --max-ttl. Thanks to Fredrik Ringertz for the patch.
 1172: 
 1173: 	    Allow --log-facility=- to force all logging to
 1174: 	    stderr. Suggestion from Clemens Fischer.
 1175: 
 1176: 	    Fix regression which caused configuration like
 1177: 	    --address=/.domain.com/1.2.3.4 to be rejected. The dot to the 
 1178: 	    left of the domain has been implied and not required for a
 1179: 	    long time, but it should be accepted for backward
 1180: 	    compatibility. Thanks to Andrew Burcin for spotting this.
 1181:     
 1182:             Add --rebind-domain-ok and --rebind-localhost-ok.
 1183: 	    Suggestion from Clemens Fischer.
 1184: 
 1185: 	    Log replies to queries of type TXT, when --log-queries 
 1186: 	    is set.
 1187: 
 1188: 	    Fix compiler warnings when compiled with -DNO_DHCP. Thanks
 1189: 	    to Shantanu Gadgil for the patch.
 1190: 
 1191:             Updated French translation. Thanks to Gildas Le Nadan.
 1192: 
 1193: 	    Updated Polish translation. Thanks to Jan Psota.
 1194: 
 1195: 	    Updated German translation. Thanks to Matthias Andree.
 1196: 
 1197: 	    Added contrib/static-arp, thanks to Darren Hoo.
 1198:  
 1199: 	    Fix corruption of the domain when a name from /etc/hosts
 1200: 	    overrides one supplied by a DHCP client. Thanks to Fedor
 1201: 	    Kozhevnikov for spotting the problem.
 1202: 
 1203:             Updated Spanish translation. Thanks to Chris Chatham.
 1204: 
 1205: 
 1206: version 2.52
 1207:             Work around a Linux kernel bug which insists that the 
 1208: 	    length of the option passed to setsockopt must be at least
 1209:             sizeof(int) bytes, even if we're calling SO_BINDTODEVICE
 1210:             and the device name is "lo".  Note that this is fixed 
 1211: 	    in kernel 2.6.31, but the workaround is harmless and 
 1212: 	    allows earlier kernels to be used. Also fix dnsmasq 
 1213: 	    bug which reported the wrong address when this failed. 
 1214: 	    Thanks to Fedor for finding this.
 1215: 
 1216: 	    The API for IPv6 PKTINFO changed around Linux kernel
 1217: 	    2.6.14. Workaround the case where dnsmasq is compiled
 1218: 	    against newer headers, but then run on an old kernel:
 1219: 	    necessary for some *WRT distros.
 1220: 
 1221: 	    Re-read the set of network interfaces when re-loading
 1222: 	    /etc/resolv.conf if --bind-interfaces is not set. This
 1223: 	    handles the case that loopback interfaces do not exist
 1224: 	    when dnsmasq is first started.
 1225: 
 1226: 	    Tweak the PXE code to support port 4011. This should
 1227: 	    reduce broadcasts and make things more reliable when other
 1228: 	    servers are around. It also improves inter-operability
 1229: 	    with certain clients.
 1230: 
 1231: 	    Make a pxe-service configuration with no filename or boot 
 1232: 	    service type legal: this does a local boot. eg.
 1233: 	    pxe-service=x86PC, "Local boot" 
 1234: 
 1235: 	    Be more conservative in detecting "A for A"
 1236: 	    queries. Dnsmasq checks if the name in a type=A query looks
 1237: 	    like a dotted-quad IP address and answers the query itself
 1238: 	    if so, rather than forwarding it. Previously dnsmasq
 1239: 	    relied in the library function inet_addr() to convert
 1240: 	    addresses, and that will accept some things which are
 1241: 	    confusing in this context, like 1.2.3 or even just
 1242: 	    1234. Now we only do A for A processing for four decimal
 1243: 	    numbers delimited by dots.
 1244: 
 1245: 	    A couple of tweaks to fix compilation on Solaris. Thanks
 1246: 	    to Joel Macklow for help with this.
 1247: 
 1248: 	    Another Solaris compilation tweak, needed for Solaris
 1249: 	    2009.06. Thanks to Lee Essen for that.
 1250: 
 1251: 	    Added extract packaging stuff from Lee Essen to 
 1252: 	    contrib/Solaris10.
 1253:           
 1254:             Increased the default limit on number of leases to 1000
 1255:             (from 150). This is mainly a defence against DoS attacks,
 1256:             and for the average "one for two class C networks"
 1257:             installation, IP address exhaustion does that just as
 1258:             well. Making the limit greater than the number of IP
 1259:             addresses available in such an installation removes a
 1260:             surprise which otherwise can catch people out.
 1261: 
 1262: 	    Removed extraneous trailing space in the value of the
 1263: 	    DNSMASQ_TIME_REMAINING DNSMASQ_LEASE_LENGTH and
 1264: 	    DNSMASQ_LEASE_EXPIRES environment variables. Thanks to
 1265: 	    Gildas Le Nadan for spotting this.
 1266: 
 1267: 	    Provide the network-id tags for a DHCP transaction to 
 1268: 	    the lease-change script in the environment variable
 1269: 	    DNSMASQ_TAGS. A good suggestion from Gildas Le Nadan.  
 1270: 
 1271: 	    Add support for RFC3925 "Vendor-Identifying Vendor
 1272: 	    Options". The syntax looks like this:  
 1273: 	    --dhcp-option=vi-encap:<enterprise number>, .........
 1274: 
 1275: 	    Add support to --dhcp-match to allow matching against
 1276: 	    RFC3925 "Vendor-Identifying Vendor Classes". The syntax
 1277: 	    looks like this:
 1278: 	    --dhcp-match=tag,vi-encap<enterprise number>, <value>
 1279: 	    
 1280: 	    Add some application specific code to assist in
 1281: 	    implementing the Broadband forum TR069 CPE-WAN
 1282: 	    specification. The details are in contrib/CPE-WAN/README
 1283: 
 1284: 	    Increase the default DNS packet size limit to 4096, as
 1285: 	    recommended by RFC5625 section 4.4.3. This can be
 1286: 	    reconfigured using --edns-packet-max if needed. Thanks to
 1287: 	    Francis Dupont for pointing this out.
 1288: 
 1289: 	    Rewrite query-ids even for TSIG signed packets, since
 1290: 	    this is allowed by RFC5625 section 4.5.
 1291: 	    
 1292: 	    Use getopt_long by default on OS X. It has been supported
 1293: 	    since version 10.3.0. Thanks to Arek Dreyer for spotting
 1294: 	    this.
 1295: 
 1296: 	    Added up-to-date startup configuration for MacOSX/launchd
 1297: 	    in contrib/MacOSX-launchd. Thanks to Arek Dreyer for
 1298: 	    providing this.
 1299: 
 1300: 	    Fix link error when including Dbus but excluding DHCP. 
 1301: 	    Thanks to Oschtan for the bug report.
 1302: 
 1303:             Updated French translation. Thanks to Gildas Le Nadan.
 1304:  
 1305:             Updated Polish translation. Thanks to Jan Psota.
 1306: 
 1307: 	    Updated Spanish translation. Thanks to Chris Chatham.
 1308: 
 1309: 	    Fixed confusion about domains, when looking up DHCP hosts
 1310: 	    in /etc/hosts. This could cause spurious "Ignoring
 1311: 	    domain..." messages. Thanks to Fedor Kozhevnikov for
 1312: 	    finding and analysing the problem.
 1313: 
 1314: 	    
 1315: version 2.51
 1316:             Add support for internationalised DNS. Non-ASCII characters
 1317:             in domain names found in /etc/hosts, /etc/ethers and 
 1318: 	    /etc/dnsmasq.conf will be correctly handled by translation to
 1319:             punycode, as specified in RFC3490. This function is only
 1320:             available if dnsmasq is compiled with internationalisation
 1321:             support, and adds a dependency on GNU libidn. Without i18n
 1322:             support, dnsmasq continues to be compilable with just
 1323:             standard tools. Thanks to Yves Dorfsman for the
 1324:             suggestion. 
 1325: 
 1326:             Add two more environment variables for lease-change scripts:
 1327: 	    First, DNSMASQ_SUPPLIED_HOSTNAME; this is set to the hostname
 1328: 	    supplied by a client, even if the actual hostname used is
 1329: 	    over-ridden by dhcp-host or dhcp-ignore-names directives.
 1330: 	    Also DNSMASQ_RELAY_ADDRESS which gives the address of 
 1331:             a DHCP relay, if used.
 1332: 	    Suggestions from Michael Rack.
 1333: 
 1334: 	    Fix regression which broke echo of relay-agent
 1335: 	    options. Thanks to Michael Rack for spotting this.
 1336:           
 1337:             Don't treat option 67 as being interchangeable with
 1338:             dhcp-boot parameters if it's specified as
 1339:             dhcp-option-force.
 1340: 
 1341: 	    Make the code to call scripts on lease-change compile-time
 1342: 	    optional. It can be switched off by editing src/config.h
 1343: 	    or building with "make COPTS=-DNO_SCRIPT".
 1344:  
 1345: 	    Make the TFTP server cope with filenames from Windows/DOS
 1346: 	    which use '\' as pathname separator. Thanks to Ralf for
 1347: 	    the patch.
 1348: 
 1349: 	    Updated Polish translation. Thanks to Jan Psota.
 1350:  
 1351: 	    Warn if an IP address is duplicated in /etc/ethers. Thanks
 1352: 	    to Felix Schwarz for pointing this out.
 1353: 
 1354: 	    Teach --conf-dir to take an option list of file suffices
 1355: 	    which will be ignored when scanning the directory. Useful
 1356: 	    for backup files etc. Thanks to Helmut Hullen for the
 1357: 	    suggestion. 
 1358: 
 1359: 	    Add new DHCP option named tftpserver-address, which
 1360: 	    corresponds to the third argument of dhcp-boot. This
 1361: 	    allows the complete functionality of dhcp-boot to be
 1362: 	    replicated with dhcp-option. Useful when using 
 1363: 	    dhcp-optsfile.
 1364: 
 1365: 	    Test which upstream nameserver to use every 10 seconds
 1366:             or 50 queries and not just when a query times out and 
 1367:             is retried. This should improve performance when there
 1368:             is a slow nameserver in the list. Thanks to Joe for the
 1369:             suggestion. 
 1370: 
 1371: 	    Don't do any PXE processing, even for clients with the 
 1372: 	    correct vendorclass, unless at least one pxe-prompt or 
 1373:             pxe-service option is given. This stops dnsmasq 
 1374:             interfering with proxy PXE subsystems when it is just 
 1375:             the DHCP server. Thanks to Spencer Clark for spotting this.
 1376: 
 1377: 	    Limit the blocksize used for TFTP transfers to a value
 1378: 	    which avoids packet fragmentation, based on the MTU of the
 1379: 	    local interface. Many netboot ROMs can't cope with
 1380: 	    fragmented packets.
 1381: 
 1382: 	    Honour dhcp-ignore configuration for PXE and proxy-PXE 
 1383: 	    requests. Thanks to Niels Basjes for the bug report.
 1384: 
 1385:             Updated French translation. Thanks to Gildas Le Nadan.
 1386: 
 1387: 
 1388: version 2.50
 1389: 	    Fix security problem which allowed any host permitted to 
 1390:             do TFTP to possibly compromise dnsmasq by remote buffer 
 1391:             overflow when TFTP enabled. Thanks to Core Security 
 1392: 	    Technologies and Iván Arce, Pablo Hernán Jorge, Alejandro 
 1393: 	    Pablo Rodriguez, Martín Coco, Alberto Soliño Testa and
 1394: 	    Pablo Annetta. This problem has Bugtraq id: 36121 
 1395:             and CVE: 2009-2957
 1396: 
 1397:             Fix a problem which allowed a malicious TFTP client to 
 1398:             crash dnsmasq. Thanks to Steve Grubb at Red Hat for 
 1399:             spotting this. This problem has Bugtraq id: 36120 and 
 1400:             CVE: 2009-2958
 1401: 
 1402: 
 1403: version 2.49
 1404:             Fix regression in 2.48 which disables the lease-change
 1405:             script. Thanks to Jose Luis Duran for spotting this.
 1406: 
 1407: 	    Log TFTP "file not found" errors. These were not logged,
 1408: 	    since a normal PXELinux boot generates many of them, but
 1409: 	    the lack of the messages seems to be more confusing than
 1410: 	    routinely seeing them when there is no real error.
 1411: 
 1412: 	    Update Spanish translation. Thanks to Chris Chatham.
 1413:  
 1414: 
 1415: version 2.48
 1416:             Archived the extensive, backwards, changelog to
 1417:             CHANGELOG.archive. The current changelog now runs from
 1418:             version 2.43 and runs conventionally.
 1419: 
 1420: 	    Fixed bug which broke binding of servers to physical
 1421: 	    interfaces when interface names were longer than four
 1422: 	    characters. Thanks to MURASE Katsunori for the patch.
 1423: 
 1424: 	    Fixed netlink code to check that messages come from the
 1425: 	    correct source, and not another userspace process. Thanks
 1426: 	    to Steve Grubb for the patch.
 1427: 
 1428: 	    Maintainability drive: removed bug and missing feature
 1429: 	    workarounds for some old platforms. Solaris 9, OpenBSD
 1430: 	    older than 4.1, Glibc older than 2.2, Linux 2.2.x and 
 1431:             DBus older than 1.1.x are no longer supported. 
 1432: 
 1433: 	    Don't read included configuration files more than once:
 1434: 	    allows complex configuration structures without problems.
 1435: 
 1436: 	    Mark log messages from the various subsystems in dnsmasq:
 1437: 	    messages from the DHCP subsystem now have the ident string
 1438: 	    "dnsmasq-dhcp" and messages from TFTP have ident
 1439: 	    "dnsmasq-tftp". Thanks to Olaf Westrik for the patch.
 1440: 
 1441: 	    Fix possible infinite DHCP protocol loop when an IP
 1442: 	    address nailed to a hostname (not a MAC address)  and a 
 1443: 	    host sometimes provides the name, sometimes not.
 1444: 
 1445: 	    Allow --addn-hosts to take a directory: all the files 
 1446: 	    in the directory are read. Thanks to Phil Cornelius for 
 1447: 	    the suggestion. 
 1448: 
 1449: 	    Support --bridge-interface on all platforms, not just BSD.
 1450:  
 1451:             Added support for advanced PXE functions. It's now
 1452:             possible to define a prompt and menu options which will
 1453:             be displayed when a client PXE boots. It's also possible to
 1454:             hand-off booting to other boot servers. Proxy-DHCP, where
 1455:             dnsmasq just supplies the PXE information and another DHCP
 1456:             server does address allocation, is also allowed. See the
 1457:             --pxe-prompt and --pxe-service keywords. Thanks to 
 1458: 	    Alkis Georgopoulos for the suggestion and Guilherme Moro
 1459:             and Michael Brown for assistance.
 1460: 
 1461: 	    Improvements to DHCP logging. Thanks to Tom Metro for
 1462: 	    useful suggestions.
 1463: 	    
 1464: 	    Add ability to build dnsmasq without DHCP support. To do
 1465: 	    this, edit src/config.h or build with
 1466: 	    "make COPTS=-DNO_DHCP". Thanks to Mahavir Jain for the patch. 
 1467: 	    
 1468: 	    Added --test command-line switch - syntax check
 1469: 	    configuration files only.
 1470:  
 1471:             Updated French translation. Thanks to Gildas Le Nadan.
 1472: 
 1473: 
 1474: version 2.47
 1475: 	    Updated French translation. Thanks to Gildas Le Nadan.
 1476: 
 1477: 	    Fixed interface enumeration code to work on NetBSD
 1478: 	    5.0. Thanks to Roy Marples for the patch. 
 1479: 
 1480: 	    Updated config.h to use the same location for the lease
 1481: 	    file on NetBSD as the other *BSD variants. Also allow
 1482: 	    LEASEFILE and CONFFILE symbols to be overriden in CFLAGS.  
 1483: 
 1484:             Handle duplicate address detection on IPv6 more
 1485:             intelligently. In IPv6, an interface can have an address
 1486:             which is not usable, because it is still undergoing DAD
 1487:             (such addresses are marked "tentative"). Attempting to
 1488:             bind to an address in this state returns an error,
 1489:             EADDRNOTAVAIL. Previously, on getting such an error,
 1490:             dnsmasq would silently abandon the address, and never
 1491:             listen on it. Now, it retries once per second for 20
 1492:             seconds before generating a fatal error. 20 seconds should
 1493:             be long enough for any DAD process to complete, but can be
 1494:             adjusted in src/config.h if necessary. Thanks to Martin
 1495:             Krafft for the bug report.
 1496: 
 1497: 	    Add DBus introspection. Patch from Jeremy Laine.
 1498: 
 1499: 	    Update Dbus configuration file. Patch from Colin Walters.
 1500: 	    Fix for this bug:
 1501:             http://bugs.freedesktop.org/show_bug.cgi?id=18961
 1502: 
 1503: 	    Support arbitrarily encapsulated DHCP options, suggestion
 1504: 	    and initial patch from Samium Gromoff. This is useful for
 1505: 	    (eg) gPXE, which expect all its private options to be
 1506: 	    encapsulated inside a single option 175. So, eg, 
 1507: 
 1508:             dhcp-option = encap:175, 190, "iscsi-client0"
 1509:             dhcp-option = encap:175, 191, "iscsi-client0-secret"
 1510: 	    
 1511: 	    will provide iSCSI parameters to gPXE.
 1512: 
 1513: 	    Enhance --dhcp-match to allow testing of the contents of a
 1514: 	    client-sent option, as well as its presence. This
 1515: 	    application in mind for this is RFC 4578
 1516: 	    client-architecture specifiers, but it's generally useful.
 1517: 	    Joey Korkames suggested the enhancement. 
 1518: 
 1519: 	    Move from using the IP_XMIT_IF ioctl to IP_BOUND_IF on
 1520: 	    OpenSolaris. Thanks to Bastian Machek for the heads-up.
 1521: 
 1522: 	    No longer complain about blank lines in
 1523: 	    /etc/ethers. Thanks to Jon Nelson for the patch.
 1524: 
 1525: 	    Fix binding of servers to physical devices, eg
 1526: 	    --server=/domain/1.2.3.4@eth0 which was broken from 2.43
 1527: 	    onwards unless --query-port=0 set. Thanks to Peter Naulls
 1528: 	    for the bug report.
 1529: 
 1530: 	    Reply to DHCPINFORM requests even when the supplied ciaddr
 1531: 	    doesn't fall in any dhcp-range. In this case it's not
 1532: 	    possible to supply a complete configuration, but
 1533: 	    individually-configured options (eg PAC) may be useful.
 1534: 
 1535: 	    Allow the source address of an alias to be a range:
 1536: 	    --alias=192.168.0.0,10.0.0.0,255.255.255.0 maps the whole
 1537: 	    subnet 192.168.0.0->192.168.0.255 to 10.0.0.0->10.0.0.255,
 1538: 	    as before.
 1539: 	    --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
 1540: 	    maps only the 192.168.0.10->192.168.0.40 region. Thanks to
 1541: 	    Ib Uhrskov for the suggestion.
 1542: 
 1543: 	    Don't dynamically allocate DHCP addresses which may break
 1544: 	    Windows.  Addresses which end in .255 or .0 are broken in
 1545: 	    Windows even when using supernetting.
 1546: 	    --dhcp-range=192.168.0.1,192.168.1.254,255,255,254.0 means 
 1547: 	    192.168.0.255 is a valid IP address, but not for Windows. 
 1548: 	    See Microsoft KB281579. We therefore no longer allocate 
 1549: 	    these addresses to avoid hard-to-diagnose problems. 
 1550: 
 1551: 	    Update Polish translation. Thanks to Jan Psota.
 1552: 
 1553: 	    Delete the PID-file when dnsmasq shuts down. Note that by
 1554: 	    this time, dnsmasq is normally not running as root, so
 1555: 	    this will fail if the PID-file is stored in a root-owned
 1556: 	    directory; such failure is silently ignored. To take
 1557: 	    advantage of this feature, the PID-file must be stored in a
 1558: 	    directory owned and write-able by the user running
 1559: 	    dnsmasq.
 1560: 
 1561: 
 1562: version 2.46
 1563: 	    Allow --bootp-dynamic to take a netid tag, so that it may
 1564: 	    be selectively enabled. Thanks to Olaf Westrik for the
 1565: 	    suggestion. 
 1566: 
 1567: 	    Remove ISC-leasefile reading code. This has been
 1568: 	    deprecated for a long time, and last time I removed it, it
 1569: 	    ended up going back by request of one user. This time,
 1570: 	    it's gone for good; otherwise it would need to be
 1571: 	    re-worked to support multiple domains (see below).
 1572: 
 1573: 	    Support DHCP clients in multiple DNS domains. This is a
 1574: 	    long-standing request. Clients are assigned to a domain
 1575: 	    based in their IP address.  
 1576: 
 1577:             Add --dhcp-fqdn flag, which changes behaviour if DNS names
 1578:             assigned to DHCP clients. When this is set, there must be
 1579:             a domain associated with each client, and only
 1580:             fully-qualified domain names are added to the DNS. The
 1581:             advantage is that the only the FQDN needs to be unique,
 1582:             so that two or more DHCP clients can share a hostname, as
 1583:             long as they are in different domains.
 1584: 
 1585: 	    Set environment variable DNSMASQ_DOMAIN when invoking
 1586: 	    lease-change script. This may be useful information to
 1587: 	    have now that it's variable.
 1588: 
 1589: 	    Tighten up data-checking code for DNS packet
 1590: 	    handling. Thanks to Steve Dodd who found certain illegal
 1591: 	    packets which could crash dnsmasq. No memory overwrite was
 1592: 	    possible, so this is not a security issue beyond the DoS
 1593: 	    potential.  
 1594: 
 1595: 	    Update example config dhcp option 47, the previous
 1596: 	    suggestion generated an illegal, zero-length,
 1597: 	    option. Thanks to Matthias Andree for finding this.
 1598: 
 1599: 	    Rewrite hosts-file reading code to remove the limit of
 1600: 	    1024 characters per line. John C Meuser found this.
 1601: 
 1602: 	    Create a net-id tag with the name of the interface on
 1603: 	    which the DHCP request was received.
 1604: 
 1605: 	    Fixed minor memory leak in DBus code, thanks to Jeremy
 1606: 	    Laine for the patch.
 1607: 
 1608: 	    Emit DBus signals as the DHCP lease database
 1609: 	    changes. Thanks to Jeremy Laine for the patch.
 1610: 
 1611: 	    Allow for more that one MAC address in a dhcp-host
 1612: 	    line. This configuration tells dnsmasq that it's OK to
 1613: 	    abandon a DHCP lease of the fixed address to one MAC
 1614: 	    address, if another MAC address in the dhcp-host statement 
 1615: 	    asks for an address. This is useful to give a fixed
 1616: 	    address to a host which has two network interfaces
 1617: 	    (say, a laptop with wired and wireless interfaces.) 
 1618:             It's very important to ensure that only one interface 
 1619: 	    at a time is up, since dnsmasq abandons the first lease 
 1620: 	    and re-uses the address before the leased time has
 1621: 	    elapsed. John Gray suggested this.
 1622: 
 1623: 	    Tweak the response to a DHCP request packet with a wrong
 1624: 	    server-id when --dhcp-authoritative is set; dnsmasq now
 1625: 	    returns a DHCPNAK, rather than silently ignoring the
 1626: 	    packet. Thanks to Chris Marget for spotting this
 1627: 	    improvement.
 1628: 
 1629: 	    Add --cname option. This provides a limited alias
 1630: 	    function, usable for DHCP names. Thanks to AJ Weber for
 1631: 	    suggestions on this.
 1632: 
 1633: 	    Updated contrib/webmin with latest version from Neil
 1634: 	    Fisher.
 1635: 
 1636: 	    Updated Polish translation. Thanks to Jan Psota.
 1637: 	    
 1638: 	    Correct the text names for DHCP options 64 and 65 to be
 1639: 	    "nis+-domain" and "nis+-servers".
 1640: 
 1641: 	    Updated Spanish translation. Thanks to Chris Chatham.
 1642: 
 1643: 	    Force re-reading of /etc/resolv.conf when an "interface
 1644: 	    up" event occurs.
 1645: 
 1646: 
 1647: version 2.45
 1648:             Fix total DNS failure in release 2.44 unless --min-port 
 1649:             specified. Thanks to Steven Barth and Grant Coady for
 1650:             bugreport. Also reject out-of-range port spec, which could
 1651:             break things too: suggestion from Gilles Espinasse.
 1652: 	    
 1653: 
 1654: version 2.44
 1655:             Fix  crash when unknown client attempts to renew a DHCP
 1656:             lease, problem introduced in version 2.43. Thanks to
 1657:             Carlos Carvalho for help chasing this down.
 1658: 
 1659: 	    Fix potential crash when a host which doesn't have a lease
 1660: 	    does DHCPINFORM. Again introduced in 2.43. This bug has
 1661: 	    never been reported in the wild.
 1662: 
 1663:             Fix crash in netlink code introduced in 2.43. Thanks to
 1664:             Jean Wolter for finding this.
 1665: 
 1666: 	    Change implementation of min_port to work even if min-port
 1667: 	    is large.
 1668: 
 1669: 	    Patch to enable compilation of latest Mac OS X. Thanks to
 1670: 	    David Gilman.
 1671: 
 1672: 	    Update Spanish translation. Thanks to Christopher Chatham.
 1673: 
 1674: 
 1675: version 2.43
 1676: 	    Updated Polish translation. Thanks to Jan Psota.
 1677: 
 1678: 	    Flag errors when configuration options are repeated
 1679: 	    illegally.
 1680: 
 1681: 	    Further tweaks for GNU/kFreeBSD
 1682: 
 1683: 	    Add --no-wrap to msgmerge call - provides nicer .po file
 1684: 	    format.
 1685: 
 1686: 	    Honour lease-time spec in dhcp-host lines even for
 1687: 	    BOOTP. The user is assumed to known what they are doing in
 1688: 	    this case. (Hosts without the time spec still get infinite
 1689: 	    leases for BOOTP, over-riding the default in the
 1690: 	    dhcp-range.) Thanks to Peter Katzmann for uncovering this.
 1691: 
 1692: 	    Fix problem matching relay-agent ids. Thanks to Michael
 1693: 	    Rack for the bug report.
 1694: 
 1695: 	    Add --naptr-record option. Suggestion from Johan
 1696: 	    Bergquist.
 1697: 
 1698: 	    Implement RFC 5107 server-id-override DHCP relay agent
 1699: 	    option.
 1700: 
 1701: 	    Apply patches from Stefan Kruger for compilation on
 1702: 	    Solaris 10 under Sun studio.
 1703: 
 1704: 	    Yet more tweaking of Linux capability code, to suppress
 1705: 	    pointless wingeing from kernel 2.6.25 and above.
 1706: 
 1707: 	    Improve error checking during startup. Previously, some
 1708: 	    errors which occurred during startup would be worked
 1709: 	    around, with dnsmasq still starting up. Some were logged,
 1710:             some silent. Now, they all cause a fatal error and dnsmasq 
 1711:             terminates with a non-zero exit code. The errors are those
 1712:             associated with changing uid and gid, setting process 
 1713:             capabilities and writing the pidfile. Thanks to Uwe
 1714: 	    Gansert and the Suse security team for pointing out 
 1715: 	    this improvement, and Bill Reimers for good implementation
 1716: 	    suggestions.
 1717: 
 1718: 	    Provide NO_LARGEFILE compile option to switch off largefile
 1719: 	    support when compiling against versions of uclibc which
 1720: 	    don't support it. Thanks to Stephane Billiart for the patch.
 1721:   
 1722:             Implement random source ports for interactions with
 1723:             upstream nameservers. New spoofing attacks have been found
 1724:             against nameservers which do not do this, though it is not
 1725:             clear if dnsmasq is vulnerable, since to doesn't implement
 1726:             recursion. By default dnsmasq will now use a different
 1727:             source port (and socket) for each query it sends
 1728:             upstream. This behaviour can suppressed using the
 1729:             --query-port option, and the old default behaviour
 1730:             restored using --query-port=0. Explicit source-port
 1731:             specifications in --server configs are still honoured.
 1732: 
 1733: 	    Replace the random number generator, for better
 1734: 	    security. On most BSD systems, dnsmasq uses the
 1735: 	    arc4random() RNG, which is secure, but on other platforms,
 1736: 	    it relied on the C-library RNG, which may be
 1737: 	    guessable and therefore allow spoofing. This release
 1738: 	    replaces the libc RNG with the SURF RNG, from Daniel
 1739: 	    J. Berstein's DJBDNS package.  
 1740: 
 1741: 	    Don't attempt to change user or group or set capabilities
 1742: 	    if dnsmasq is run as a non-root user. Without this, the
 1743: 	    change from soft to hard errors when these fail causes
 1744: 	    problems for non-root daemons listening on high
 1745: 	    ports. Thanks to Patrick McLean for spotting this.
 1746: 
 1747: 	    Updated French translation. Thanks to Gildas Le Nadan.
 1748: 
 1749: 
 1750: version 2.42
 1751:             The changelog for version 2.42 and earlier is 
 1752:             available in CHANGELOG.archive.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>