1 release 0.4 - initial public release
3 release 0.5 - added caching, removed compiler warning on linux PPC
5 release 0.6 - TCP handling: close socket and return to connect state if we
6 can't read the first byte. This corrects a problem seen very
7 occasionally where dnsmasq would loop using all available CPU.
9 Added a patch from Cris Bailiff <c.bailiff@e-secure.com.au>
10 to set SO_REUSEADDR on the tcp socket which stops problems when
11 dnsmasq is restarted and old connections still exist.
13 Stopped claiming in doc.html that smail is the default Debian
14 mailer, since it isn't any longer. (Pointed out by
15 David Karlin <dkarlin@coloradomtn.edu>)
17 release 0.7 Create a pidfile at /var/run/dnsmasq.pid
19 Extensive armouring against "poison packets" courtesy of
20 Thomas Moestl <tmoestl@gmx.net>
22 Set sockaddr.sa_family on outgoing address, patch from
23 David Symonds <xoxus@usa.net>
25 Patch to clear cache on SIGHUP
26 from Jason L. Wagner <nialscorva@yahoo.com>
28 Fix bad bug resulting from not initialising value-result
29 address-length parameter to recvfrom() and accept() - it
30 worked by luck before!
32 release 0.95 Major rewrite: remove calls to gethostbyname() and talk
33 directly to the upstream server(s) instead.
34 This has many advantages.
35 (1) Dnsmasq no longer blocks during long lookups.
36 (2) All query types are handled now, (eg MX) not just internet
37 address queries. Addresses are cached, all other
38 queries are forwarded directly.
39 (3) Time-to-live data from upstream server is read and
40 used by dnsmasq to purge entries from the cache.
41 (4) /etc/hosts is still read and its contents served (unless
42 the -h option is given).
43 (5) Dnsmasq can get its upstream servers from
44 a file other than /etc/resolv.conf (-r option) this allows
45 dnsmasq to serve names to the machine it is running
46 on (put nameserver 127.0.0.1 in /etc/resolv.conf and
47 give dnsmasq the option -r /etc/resolv.dnsmasq)
48 (6) Dnsmasq will re-read it's servers if the
49 modification time of resolv.conf changes. Along with
50 4 above this allows nameservers to be set
51 automatically by ppp or dhcp.
53 A really clever NAT-like technique allows the daemon to have lots
54 of queries in progress, but still remain very lightweight.
55 Dnsmasq has a small footprint and normally doesn't allocate
56 any more memory after start-up. The NAT-like forwarding was
57 inspired by a suggestion from Eli Chen <eli@routefree.com>
59 release 0.96 Fixed embarrasing thinko in cache linked-list code.
61 release 0.98 Some enhancements and bug-fixes.
62 Thanks to "Denis Carre" <denis.carre@laposte.net> and Martin
63 Otte <otte@essc.psu.edu>
65 (1) Dnsmasq now always sets the IP source address
66 of its replies correctly. Older versions would not always
67 do this on multi-homed and IP aliased hosts, which violates
69 (2) Dnsmasq no longer crashes if a server loop is created
70 (ie dnsmasq is told to use itself as an upstream server.)
71 Now it just logs the problem and doesn't use the bad
73 (3) Dnsmasq should now forward (but not cache) inverse queries
74 and server status queries; this feature has not been tested.
75 (4) Don't write the pid file when in non-daemon mode.
76 (5) Create the pid file mode 644, rather then 666 (!).
77 (6) Generate queries to upstream nameservers with unpredictable
78 ids, to thwart DNS spoofers.
79 (7) Dnsmasq no longer forwards queries when the
80 "recursion desired" bit is not set in the header.
81 (8) Fixed getopt code to work on compliers with unsigned char.
83 release 0.991 Added -b flag: when set causes dnsmasq to always answer
84 reverse queries on the RFC 1918 private IP space itself and
85 never forward them to an upstream server. If the name is not in
86 /etc/hosts, dnsmasq replies with the dotted-quad address.
88 Fixed a bug which stopped dnsmasq working on a box with
89 two or more interfaces with the same IP address.
91 Fixed cacheing of CNAMEs. Previously, a CNAME which pointed
92 to a name with many A records would not have all the addresses
93 returned when being answered from the cache.
95 Thanks to "Steve Hardy" <s.a.hardy@connectux.com> for his input
98 Fixed race which could cause dnsmasq to miss the second of
99 two closely-spaced updates of resolv.conf (Thanks to Eli Chen
100 for pointing this out.)
102 Fixed a bug which could cause dnsmasq to fail to cache some
105 release 0.992 Small change to memory allocation so that names in /etc/hosts
106 don't use cache slots. Also make "-c 0" flag meaningfully
107 disable caching completely.
109 release 0.993 Return only the first (canonical) name from an entry in
110 /etc/hosts as reply to reverse query.
112 Handle wildcard queries for names/addresses in /etc/hosts
113 this is mainly to allow reverse lookups by dig to succeed.
114 (Bug reported by Simon J. Rowe" <srowe@mose.org.uk>)
116 Subtle change to the logic which selects which of multiple
117 upstream servers we send queries to. This fixes a problem
118 where dnsmasq continuously sends queries to a server which
119 is returning error codes and ignores one which is working.
121 release 0.994 Fixed bug which broke lookup of names in /etc/hosts
122 which have upper-case letters in them. Thanks for Joao Clemente
123 for spotting that one.
125 Output cache statistics on receipt of SIGUSR1. These go
126 to syslog except in debug (-d) mode, when a complete cache
127 dump goes to stdout. Suggestion from Joao Clemente, code
128 based in John Volpe's.
130 Accept GNU long options on the command line. Code from
133 Split source code into multiple files and produced
136 Included code from John Volpe to parse dhcp.leases file
137 written by ISC dhcpd. The hostnames in the leases file are
138 added to the cache and updated as dhcpd updates the
139 leases file. The code has been heavily re-worked by me,
140 so any bugs are probably mine.
142 release 0.995 Small tidy-ups to signal handling and cache code.
144 release 0.996 Added negative caching: If dnsmasq gets a "no such domain" reply
145 from an upstream nameserver, it will cache that information
146 for a time specified by the SOA RR in the reply. See RFC 2308
147 for details. This is useful with resolver libraries
148 which append assorted suffices to non-FQDN in an attempt to
149 resolve them, causing useless cache misses.
151 Added -i flag, which restricts dnsmasq to offering name service
152 only on specified interfaces.
154 release 0.997 Deleted INSTALL script and added "install" target to makefile.
156 Stopped distributing binaries in the tarball to avoid
157 libc version clashes.
159 Fixed interface detection code to
160 remove spurious startup errors in rare circumstances.
162 Dnsmasq now changes its uid, irrevocably, to nobody after
163 startup for security reasons. Thanks to Peter Bailey for
166 Cope with infinite DHCP leases. Patch thanks to
169 Added rpm control files to .tar.gz distribution. Thanks to
170 Peter Baldwin at ClarkConnect for those.
172 Improved startup script for rpms. Thanks to Yaacov Akiba Slama.
174 release 1.0 Stable release: dnsmasq is now considered feature-complete
177 release 1.1 Added --user argument to allow user to change to
180 Added --mx-target argument to allow mail to be delivered
181 away from the gateway machine running dnsmasq.
183 Fixed highly obscure bug with wildcard queries for
184 DHCP lease derived names.
186 Moved manpage from section 1 to section 8.
188 Added --no-poll option.
189 Added Suse-rpm support.
190 Thanks to Joerg Mayer for the last two.
192 release 1.2 Added IPv6 DNS record support. AAAA records are cached
193 and read from /etc/hosts. Reverse-lookups in the
194 ip6.int and ip6.arpa domains are suppored. Dnsmasq can
195 talk to upstream servers via IPv6 if it finds IP6 addresses
196 in /etc/resolv.conf and it offers DNS service automatically
197 if IPv6 support is present in the kernel.
199 Extended negative caching to NODATA replies.
201 Re-vamped CNAME processing to cope with RFC 2317's use of
202 CNAMES to PTR RRs in CIDR.
204 Added config.h and a couple of symbols to aid
205 compilation on non-linux systems.
207 release 1.3 Some versions of the Linux kernel return EINVAL rather
208 then ENPROTONOSUPPORT when IPv6 is not available,
209 causing dnsmasq to bomb out. This release fixes that.
210 Thanks to Steve Davis for pointing this one out.
212 Trivial change to startup logic so that dnsmasq logs
213 its stuff and reads config files straight away on
214 starting, rather than after the first query - principle
215 of least surprise applies here.
217 release 1.4 Fix a bug with DHPC lease parsing which broke in
218 non-UTC timezones. Thanks to Mark Wormgoor for
219 spotting and diagnosing this. Fixed versions in
220 the .spec files this time. Fixed bug in Suse startup
221 script. Thanks to Didi Niklaus for pointing this out.
223 release 1.5 Added --filterwin2k option which stops dnsmasq from forwarding
224 "spam" queries from win2k boxes. This is useful to stop spurious
225 connections over dial-on-demand links. Thanks to Steve Hardy
228 Clear "truncated" bit in replies we return from upstream. This
229 stops resolvers from switching to TCP, which is pointless since
230 dnsmasq doesn't support TCP. This should solve problems
231 in resolving hotmail.com domains.
233 Don't include getopt.h when Gnu-long-options are disabled -
234 hopefully this will allow compilation on FreeBSD.
236 Added the --listen-address and --pid-file flags.
238 Fixed a bug which caused old entries in the DHCP leases file
239 to be used in preference to current ones under certain
242 release 1.6 If a machine gets named via DHCP and the DHCP name doesn't have
243 a domain part and domain suffix is set using the -s flag, then
244 that machine has two names with the same address, with and
245 without the domain suffix. When doing a _reverse_ lookup to
246 get the name, the "without suffix" name used to be returned,
247 now the "with suffix" one gets returned instead. This change
248 suggested by Arnold Schulz.
250 Fixed assorted typos in the documentation. Thanks
253 Subtle rearrangement to the downloadable tarball, and stopped
254 distributing .debs, since dnsmasq is now an official Debian
257 release 1.7 Fix a problem with cache not clearing properly
258 on receipt of SIGHUP. Bug spotted by Sat Deshpande.
260 In group-id changing code:
261 1) Drop supplimentary groups.
262 2) Change gid before dropping root (patch from Soewono Effendi.)
263 3) Change group to "dip" if it exists, to allow access
264 to /etc/ppp/resolv.conf (suggestion from Jorg Sommer.)
265 Update docs to reflect above changes.
267 Other documentation changes from David Miller.
268 Added suggested script fragment for dhcpcd.exe.
270 release 1.8 Fix unsafe use of tolower() macro - allows linking against
271 ulibc. (Patches from Soewono Effendi and Bjorn Andersson.)
273 Fix typo in usage string.
275 Added advice about RedHat PPP configuration to
276 documentation. (Thanks to C. Lee Taylor.)
278 Patches to fix problems on BSD systems from Marc Huber
279 and Can Erkin Acar. These add the options
280 HAVE_ARC4RANDOM and HAVE_SOCKADDR_SA_LEN to config.h.
281 Elaborated config.h - should really use autoconf.
283 Fix time-to-live calculation when chasing CNAMEs.
285 Fix use-after-free and missing initialisation bugs in
286 the cache code. (Thanks to Marc Huber.)
288 Builds on Solaris 9. (Thanks to Marc Huber.)
290 release 1.9 Fixes to rpm .spec files.
292 Don't put expired DHCP entries into the cache only to
293 throw them away again.
295 Put dnsmasq on a severe memory diet: this reduces both
296 the amount of heap space used and the stack size
297 required. The difference is not really visible with
298 bloated libcs like glibc, but should dramatically reduce
299 memory requirements when linked against ulibc for use on
300 embeded routers, and that's the point really. Thanks to
301 Matthew Natalier for prompting this.
303 Changed debug mode (-d) so that all logging appears on
304 stderr as well as going to syslogd.
306 Added HAVE_IPV6 config symbol to allow compilation
307 against a libc which doesn't have IPv6 support.
309 Added a facility to log all queries, enabled with -q flag.
311 Fixed packet size checking bug in address extraction code.
313 Halved default cache size - 300 was way OTT in typical use.
315 Added self-MX function, enabled by -e flag. Thanks to
316 Lyonel Vincent for the patch.
318 Added HAVE_FORK config symbol and stuff to support
319 uClinux. Thanks to Matthew Natalier for uClinux stuff.
321 release 1.10 Log warnings if resolv.conf or dhcp.leases are not
322 accessable for any reason, as suggested by Hinrich Eilts.
324 Fixed wrong address printing in error message about
325 no interface with address.
327 Updated docs and split installation instuctions into setup.html.
329 Fix bug in CNAME chasing code: One CNAME pointing
330 to many A records would lose A records after the
331 first. This bug was introduced in version 1.9.
333 Log startup failures at level Critical as well as
334 printing them to standard error.
335 Exit with return code 1 when given bad options.
337 Cleaned up code for no-cache operation.
339 Added -o option which forces dnsmasq to use to
340 upstream servers in the order they appear in /etc/resolv.conf.
342 Added upstream server use logging.
344 Log full cache dump on receipt of SIGUSR1 when query
345 logging is enabled (-q switch).
347 Added -S option to directly specify upstream servers and
348 added ability to direct queries for specific domains to
349 specfic servers. Suggested by Jens Vonderheide.
351 Upgraded random ID generation - patch from Rob Funk.
353 Fixed reading of domains in arguments with capital
354 letters or trailing periods.
356 Fixed potential SEGV when given bad options.
358 Read options from /etc/dnsmasq.conf if it exists.
359 Do sensible things with missing parameters, eg
360 "--resolv-file=" turns off reading /etc/resolv.conf.
362 release 1.11 Actually implement the -R flag promised in the 1.10 man page.
364 Improve and rationalise the return codes in answers to
365 queries. In the case that there are no available
366 upstream servers to forward a query to, return REFUSED.
367 This makes sendmail work better on modem connected
368 systems when the modem link is down (Thanks to Roger Plant).
369 Cache and return the NXDOMAIN status of failed queries:
370 this makes the `host` command work when traversing search
371 paths (Thanks to Peter Bailey). Set the "authoritative"
372 bit in replies containing names from /etc/hosts or DHCP.
374 Tolerate MS-DOS style line ending codes in /etc/hosts
375 and /etc/resolv.conf, for people who copy from winsock
378 Allow specification of more than one resolv.conf file. This is
379 intended for laptops which connect via DHCP or
380 PPP. Whichever resolv.conf was updated last is used.
382 Allow -S flags which specify a domain but no server
383 address. This gives local domains which are never forwarded.
385 Add -E flag to automatically add the domain suffix to
386 names in /etc/hosts -suggestion from Phil Harman.
388 Always return a zero time-to-live for names derived from
389 DHCP which stops anthing else caching these
390 names. Previously the TTL was derived from the lease
391 time but that is incorrect since a lease can be given
392 up early: dnsmasq would know this but anything with the
393 name cached with long TTL would not be updated.
395 Extended HAVE_IPV6 config flag to allow compliation on
396 old systems which don't have modern library routines
397 like inet_ntop(). Thanks to Phil Harman for the patch.
399 release 1.12 Allow more than one domain in server config lines and
400 make "local" a synonym for "server". This makes things
401 like "local=/localnet/thekelleys.org.uk/" legal. Allow
402 port to specified as part of server address.
404 Allow whole domains to have an IP address specified
405 in /etc/dnsmasq.conf. (/etc/hosts doesn't work domains).
406 address=/doubleclick.net/127.0.0.1 should catch all
407 those nasty banner ads. Inspired by a patch
408 from Daniel Gryniewicz
410 Log the source of each query when logging switched on.
412 Fix bug in script fragment for dhcpcd - thanks to Barry Stewart.
414 Fix bug which meant that strict-order and self-mx were
417 Builds with Linux libc5 now - for the Freesco project.
419 Fixed Makefile installation script (patch from Silvan
420 Minghetti) and added CC and CFLAGS variables.
422 Improve resource allocation to reduce vulnerability to
423 DOS attacks - the old version could have all queries
424 blocked by a continuous high-speed stream of
425 queries. Now some queries will succeed, and the excess
426 will be rejected with a server fail error. This change also
427 protects against server-loops; setting up a resolving
428 loop between two instances of dnsmasq is no longer
429 catastrophic. The servers will continue to run, looped
430 queries fail and a warning is logged. Thanks to C. Lee
431 Taylor for help with this.
433 release 1.13 Added support for building rpms suitable for modern Suse
434 systems. (patch from Andi <cambeis@netplace.de>)
436 Added options --group, --localmx, --local-ttl,
437 --no-negcache, --addn-host.
439 Moved all the various rpm-building bits into /rpm.
441 Fix builds with glibc 2.1 (thanks to Cristian
444 Preserve case in domain names, as per RFC1035.
446 Fixed ANY queries to domains with --address specification.
448 Fixed FreeBSD build. (thanks to Steven Honson)
450 Added -Q option which allows a specified port to be used
451 to talk to upstream servers. Useful for people who want
452 very paranoid firewalls which open individual UDP port.
453 (thanks to David Coe for the patch)
455 release 1.14 Fixed man page description of -b option which confused
456 /etc/hosts with /etc/resolv.conf. (thanks to Christopher
459 Fixed config.h to allow building under MACOS X and glibc
460 2.0.x. (thanks to Matthew Gregan and Serge Caron)
462 Added --except-interface option. (Suggested by Serge Caron)
464 Added SIGUSR2 facility to re-scan for new
465 interfaces. (Suggested by Serge Caron)
467 Fixed SEGV in option-reading code for invalid options.
468 (Thanks to Klaas Teschauer)
470 Fixed man page to clarify effect of SIGUSR1 on
472 (Thanks to Klaas Teschauer)
474 Check that recieved queries have only rfc1035-legal characters
475 in them. This check is mainly to avoid bad strings being
478 Fixed &&/& confusion in option.c and added DESTDIR
479 variable for "make install" (Thanks to Osvaldo
480 Marques for the patch.)
482 Fixed /etc/hosts parsing code to cope with MS-DOS
483 line-ends in the file. This was supposed to be done in
484 version 1.11, but something got missed. (Thanks to Doug
485 Copestake for helping to find this.)
487 Squash repeated name/address pairs read from hosts
490 Tidied up resource handling in util.c (Thanks to
491 Cristian Ionescu-Idbohrn).
493 Added hashed searching of domain names. People are starting
494 to use dnsmasq with larger loads now, and bigger caches,
495 and large lists of ad-block addresses. This means doing
496 linear searches can start to use lots of CPU so I added hashed
497 searching and seriously optimised the cache code for
498 algorithmic efficiency. Also upped the limit on cache
501 Fixed logging of the source of names from the additional
502 hosts file and from the "bogus private address" option.
504 Fixed spurious re-reading of empty lease files. (Thanks
505 to Lewis Baughman for spotting this.)
507 Fixed building under uclibc (patch from Cristian Ionescu-Idbohrn)
509 Do some socket tweaking to allow dnsmasq to co-exist
510 with BIND. Thanks to Stefan 'Sec' Zehl for the patch.
512 release 1.15 Added --bogus-nxdomain option.
514 Restrict checking of resolv.conf and DHCP leases files
515 to once per second. This is intended to improve
516 performance under heavy loads. Also make a system call
517 to get the current time once per query, rather than four
520 Increased number of outstanding queries to 150 in
523 release 1.16 Allow "/" characters in domain names - this fixes
524 caching of RFC 2317 CNAME-PTR records.
526 Fixed brain-fart in -B option when GETOPT_LONG not
527 enabled - thanks to Steven Young and Jason Miller
528 for pointing this out.
530 Generalised bogus-nxdomain code: allow more than one
531 address to check, and deal with replies with multiple
532 answer records. (Based on contribution from Humberto
535 Updated the documentation to include information about
536 bogus-nxdomain and the Verisign tragedy.
538 Added libraries needed on Solaris to Makefile.
540 Added facility to set source address in queries to
541 upstream nameservers. This is useful with multihomed
542 hosts, especially when using VPNs. Thanks to Tom Fanning
543 for suggesting this feature.
545 Tweaked logging: log to facility LOCAL0 when in
546 debug/no-daemon mode and changed level of query logging
547 from INFO to DEBUG. Make log options controllable in
550 release 1.17 Fixed crash with DHCP hostnames > 40 characters.
552 Fixed name-comparision routines to not depend on Locale,
553 in theory this versions since 1.15 could lock up or give
554 wrong results when run with locale != 'C'.
556 Fix potential lockup in cache code. (thanks to Henning
557 Glawe for help chasing this down.)
559 Made lease-file reader bullet-proof.
561 Added -D option, suggested by Peter Fichtner.
563 release 1.18 Added round-robin DNS for names which have more than one
564 address. In this case all the addresses will be
565 returned, as before, but the order will change on each
568 Remove stray tolower() and isalnum() calls missed in
569 last release to complete LOCALE independence.
571 Allow port numbers in source-address specifications.
573 For hostnames without a domain part which don't get
574 forwarded because -D is in effect, return NXDOMAIN not
577 Add code to return the software version in repsonse to the
578 correct magic query in the same way as BIND. Use
579 "dig version.bind chaos txt" to make the query.
581 Added negative caching for PTR (address to name) records.
583 Ensure that names of the form typically used in PTR queries
584 (ie w.x.yz.in-addr.arpa and IPv6 equivalents) get
585 correct answers when queried as other types. It's
586 unlikely that anyone would do this, but the change makes
587 things pedantically correct.
589 Taught dnsmasq to understand "bitstring" names, as these
590 are used for PTR lookups of IPv6 addresses by some
591 resolvers and lookup tools. Dnsmasq now understands both
592 the ip6.int domain and the ip6.arpa domain and both
593 nibble and bitstring formats so it should work with any
594 client code. Standards for this stuff have flip-flopped
595 over the last few years, leaving many different clients
596 in their wake. See RFC2673 for details of bitstrings.
598 Allow '_' characters in domain names: Legal characters
599 are now [a-z][A-Z].-_ Check names read from hosts files
600 and leases files and reject illegal ones with a message
603 Make empty domain names in server and address options
604 have the special meaning "unqualified
605 names". (unqualified names are names without any dots in
606 them). It's now possible to do server=//1.2.3.4 and have
607 unqualified names sent to a special nameserver.
610 Moved source code into src/ directory.
612 Fixes to cure compilation breakage when HAVE_IPV6 not
613 set, thanks to Claas Hilbrecht.
615 BIG CHANGE: added an integrated DHCP server and removed
616 the code to read ISC dhcp.leases. This wins in terms
617 of ease of setup and configuration flexibility and
618 total machine resources consumed.
620 Re-jiged the signal handling code to remove a race
621 condition and to be more portable.
624 Thanks to David Ashworth for feedback which informed many
627 Allow hosts to be specified by client ID in dhcp-hosts
628 options. These are now one of
629 dhcp-host=<hardware addr>,....
630 dhcp-host=id:<hex client id>,.....
631 dhcp-host=id:<ascii client id>,.....
633 Allow dhcp-host options to specify any IP address on the
634 DHCP-served network, not just the range available for
637 Allow dhcp-host options for the same host with different
638 IP adresses where the correct one will be selected for
639 the network the host appears on.
641 Fix parsing of --dhcp-option to allow more than one
642 IP address and to allow text-type options.
644 Inhibit use of --dhcp-option to send hostname DHCP options.
646 Update the DNS with DHCP information after re-reading
647 /etc/hosts so that any DHCP derived names which have been
648 shadowed by now-deleted hosts entries become visible.
650 Fix typos in dnsmasq.conf.example
652 Fixes to Makefile(s) to help pkgsrc packaging - patch
655 Add dhcp-boot option to support network boot.
657 Check for duplicate IP addresses in dhcp-hosts lines
658 and refuse to run if found. If allowed to remain these
659 can provoke an infinite loop in the DHCP protocol.
661 Attempted to rationalise the .spec files for rpm
662 building. There are now files for Redhat, Suse and
663 Mandrake. I hope they work OK.
665 Fixed hard-to-reproduce crash involving use of local
666 domains and IPv6 queries. Thanks to Roy Marples for
667 helping to track that one down.
670 Thanks to Matt Swift and Dag Wieers for many suggestions
671 which went into this release.
673 Tweak include files to allow compilation on FreeBSD 5
675 Fix unaligned access warnings on BSD/Alpha.
677 Allow empty DHCP options, like so: dhpc-option=44
679 Allow single-byte DHCP options like so: dhcp-option=20,1
681 Allow comments on the same line as options in
684 Don't complain when the same name and address is
685 allocated to a host using DHCP and /etc/hosts.
687 Added to the example configuration the dnsmasq equivalent
688 of the ISC dhcpd settings given in
689 http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
691 Fixed long-existing strangeness in Linux IPv6 interface
692 discovery code. The flags field in /proc/net/if_inet6 is
693 _not_ the interface flags.
695 Fail gracefully when getting an ENODEV error when trying
696 to bind an IPv6 socket, rather than bailing out. Thanks
697 to Jan Ischebeck for feedback on that.
699 Allow the name->address mapping for static DHCP leases to
700 be set by /etc/hosts. It's now possible to have
701 dhcp-host=<mac addr>,wibble
704 and in /etc/hosts have
706 and for the correct thing to happen. Note that some sort
707 of dhcp-host line is still needed, it's not possible for
708 random host to claim an address in /etc/hosts without
709 some explicit configuration.
711 Make 0.0.0.0 in a dhcp-option to mean "the machine
714 Fix lease time spec when specified in dhcp-range and not
715 in dhcp-host, previously this was always one hour.
717 Fix problem with setting domains as "local only". -
718 thanks to Chris Schank.
720 Added support for max message size DHCP option.
723 Fix total lack for DHCP functionality on
724 Linux systems with IPv6 enabled. - thanks to
725 Jonathon Hudson for spotting that.
727 Move default config file under FreeBSD - patch from
731 Fix "install" makefile target. (reported by Rob Stevens)
733 Ensure that "local=/domain/" flag is obeyed for all
734 queries on a domain, not just A and AAAA. (Reported by
737 Handle DHCPDECLINE messages and provide an error message
740 Add "domain" setting example to
741 dnsmasq.conf.example. Thanks to K P Kirchdorfer for
742 spotting that it was missing.
744 Subtle change to the DHCPREQUEST handling code to work
745 around a bug in the DHCP client in HP Jetdirect printers.
746 Thanks to Marko Stolle for finding this problem.
748 Return DHCP T1 and T2 times, with "fuzz" to desychronise lease
749 renewals, as specified in the RFC.
751 Ensure that the END option is always present in DHCP
752 packets , even if the packet is too small to fit all
753 the requested options.
755 Handle larger-than-default DHCP packets if required, up
758 Fix a couple of places where the return code from
759 malloc() was not checked.
761 Cope with a machine taking a DHCP lease and then moving
762 network so that the lease address is no longer valid.
764 The DHCP server will now work via a BOOTP relay - remote
765 networks are configured with the dhcp-range option the
766 same as directly connected ones, but they need an
767 additional netmask parameter. Eg
768 --dhcp-range=192.168.4.10,192.168.4.50,255.255,255.0
769 will enable DHCP service via a BOOTP relay on the
772 Add a limit on the number of available DHCP leases,
773 otherwise the daemon could be DOSed by a malicious
774 host. The default is 150, but it can be changed by the
775 dhcp-lease-max option.
777 Fixed compilation on OpenBSD (thanks to Frederic Brodbeck
780 Reworked the DHCP network handling code for two good
781 effects: (1) The limit of one network only for DHCP on
782 FreeBSD is now gone, (2) The DHCP server copes with
783 dynamically created interfaces. The one-interface
784 limitation remains for OpenBSD, which is missing
785 extensions to the socket API which have been in Linux
786 since version 2.2 and FreeBSD since version 4.8.
788 Reworked the DNS network code to also cope with
789 dynamically created interfaces. dnsmasq will now listen
790 to the wildcard address and port 53 by default, so if no
791 --interface or --address options are given it will handle
792 dynamically created interfaces. The old behaviour can be
793 restored with --bind-interfaces for people running BIND
794 on one interface and dnsmasq on another. Note that
795 --interface and --address options still work, but the
796 filtering is done by dnsmasq, rather then the kernel.
797 This works on Linux, and FreeBSD>=5.0. On systems which
798 don't support the required API extensions, the old
799 behaviour is used, just as if --bind-interfaces had been set.
801 Allow IPv6 support to be disabled at compile time. To do
802 that, add -DNO_IPV6 to the CFLAGS. Thanks to Oleg
803 I. Vdovikin for the suggestion to do that.
805 Add ability to set DHCP options per network. This is done
806 by giving a network an identifier like this:
807 dhcp-range=red-net,192.168.0.10,192.168.0.50
808 and then labeling options intended for that network only
810 dhcp-option=red-net,6,1.1.1.1
811 Thanks to Oleg Vdovikin for arguing that one through.
813 Made errors in the configuration file non-fatal: dnsmasq
814 will now complain bitterly, but continue.
816 Added --read-ethers option, to allow dnsmasq to pull
817 static DHCP information from that file.
818 Thanks to Andi Cambeis for that suggestion.
820 Added HAVE_BROKEN_RTC compilation option to support
821 embedded systems without a stable RTC. Oleg Vdovikin
822 helped work out how to make that work.
825 Fixed inability to start when the lease file doesn't
826 already exist. Thanks to Dag Wieers for reporting that.
828 Fixed problem were dhcp-host configuration options did
829 not play well with entries in /etc/ethers for the same
830 host. Thanks again to Dag Wieers.
832 Tweaked DHCP code to favour moving to a newly-configured
833 static IP address rather than an old lease when doing
836 Added --alias configuration option. This provides IPv4
837 rewrite facilities like Cisco "DNS doctoring". Suggested
840 Fixed bug in /etc/ethers parsing code triggered by tab
841 characters. Qudos to Dag Wieers for hepling to nail that
844 Added "bind-interfaces" option correctly.
847 Made "where are we allocating addresses?" code in DHCP
848 server cope with requests via a relay which is on a
849 directly connected network for which there is not a
850 configured netmask. This strange state of affairs occurs
851 with win4lin. Thanks to Alex Melt and Jim Horner for bug
852 reports and testing with this.
854 Fixed trivial-but-irritating missing #include which broke
857 Force --bind-interfaces if IP-aliased interface
858 specifications are used, since the sockets API provides
859 no other sane way to determine which alias of an
860 interface a packet was sent to. Thanks to Javier Kohen