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