Update changelog
[resolvconf/resolvconf.git] / README
1                           README file for
2                             resolvconf
4 Contents
5 ~~~~~~~~
6 News
7 Introduction
8 Rationale
9 HOWTO
10 Order of entries in resolv.conf
11 Requirements
12 Technical overview
13 Usage information for developers
14 Usage information for maintainers
15 Usage information for administrators
16 FAQ
17 TODO
18 DONE
19 Credits
21 News
22 ~~~~
23 * Last updated 12 February 2013 for version 1.71
25 Introduction
26 ~~~~~~~~~~~~
27 Resolvconf is a framework for keeping track of the system's information about
28 currently available nameservers.  It sets itself up as the intermediary
29 between programs that supply nameserver information and applications that need
30 nameserver information.
32 Rationale
33 ~~~~~~~~~
34 /etc/resolv.conf was once a simple static configuration file where the
35 sysadmin placed a few directives that rarely needed to be changed.  That
36 changed with the advent of mobile computing: a computer can now move from one
37 network to another quite often.  Debian currently includes many packages that
38 alter resolv.conf more or less automatically.  Some of them are listed below,
39 along with a short description of what they do which I have tried to keep up
40 to date.  (Figures in parentheses show the number of the package's
41 popularity-contest votes as of 5 January 2005.)
43 pcmcia-cs (914)
44     Can overwrite resolv.conf with no backup unless (as of 3.2.5-1)
45     resolvconf is installed.  By default, doesn't.
46 ppp (4533)
47     pppd optionally overwrites /etc/ppp/resolv.conf .  By default, does.
48 pppconfig (3702)
49     Moves resolv.conf out of the way and puts it back when done.
50 pppoeconf (2938)
51     Prior to version 1.0, overwrites resolv.conf, attempting to merge
52     its stuff with the existing contents.  Creates a backup in /etc/ but
53     doesn't restore it.
54 gnome-ppp (24)
55     Contains experimental code, currently commented out, that overwrites
56     resolv.conf.
57 gnome-system-tools (1349)
58     Allows the user to write directly to /etc/resolv.conf.
59 systemconfigurator (94)
60     Allows the user to write directly to /etc/resolv.conf.
61 webmin (781)
62     Prior to version 1.150-2, the Network Configuration|DNS Client page
63     can make changes to /etc/resolv.conf.  As of 1.150-2 this page is
64     read-only when resolvconf is installed.
65 webmin-wvdial (8)
66     Copies /etc/ppp/resolv.conf over /etc/resolv.conf after PPP
67     connection established unless (as of version 1.160-3) the latter is
68     a symbolic link; restores original contents from backup file when
69     the connection is broken.
70 xisp (1 -- removed)
71     Adds lines to /etc/resolv.conf on PPP interface up and deletes those
72     lines on interface down.
73 totd (5)
74     Prior to 1.4-4, PPP hook scripts can do things to /etc/resolv.conf
75     but SFAICT are effectively no-ops if resolvconf is installed.  Hard
76     to tell.  Postinst does things to /etc/resolv.conf and also rewrites
77     dhclient_enter_hooks in a way incompatible with resolvconf.  As of
78     1.4-4 totd plays nicely with resolvconf. As of Wheezy, totd is gone
79     from Debian.
80 dhcp-client (4005)
81     Prior to version 2.0pl5-17, overwrites resolv.conf without making a
82     backup.
83 dhcp3-client (676)
84     Overwrites resolv.conf unless make_resolv_conf() is redefined.
85     Resolvconf redefines it.
86 dhcpcd (104)
87     Optionally overwrites resolv.conf .  Default is not to do so.  Prior
88     to version 1:1.3.22pl4-8, hook script overwrites
89     /etc/dhcpc/resolv.conf unless (as of 1:1.3.22pl4-7) resolvconf is
90     installed.
91 pump (734)
92     Prior to version 0.8.15, blindly overwrites resolv.conf unless nodns
93     option is used.  No backup.  As of version 0.8.15 pump calls
94     resolvconf if it is installed instead of overwriting
95     /etc/resolv.conf.
96 udhcpc (44)
97     Prior to version 0.9.8cvs20050124-2, blindly overwrites resolv.conf
98     without making a backup.
99 netenv (43)
100     Contains sample code that, if uncommented, would overwrite
101     /etc/resolv.conf without backing it up
102 switchconf (12)
103     Forcibly links selected resolv.conf file into place without making a
104     backup.
105 divine (9)
106     Symlinks-in a resolv.conf for the selected network.  Appears to
107     trash whatever was in resolv.conf when it starts.
108 intuitively (18)
109     If a resolv.conf file is included in /etc/intuitively/NETWORK,
110     blindly overwrites /etc/resolv.conf .
111 laptop-netconf (23)
112     Symlinks in a resolv.conf for the detected network.  Seems to make a
113     backup of resolv.conf but doesn't restore it.
114 whereami (23)
115     Contains utility scripts that modify resolv.conf
116 laptop-net (42)
117     Overwrites resolv.conf unless (as of 2.20) resolvconf is installed.
119 Several other packages recommend to the user that scripts be written to alter
120 or replace resolv.conf.
122 Third-party software packages also futz with /etc/resolv.conf. Among them
123 are the Cisco AnyConnect, Juniper AnyConnect and FortiClient SSL VPN clients.
125 These packages do not cooperate; they simply overwrite one another's changes.
126 Even those that back up and restore the file will corrupt it if interfaces are
127 brought up and down in other than a LIFO order.  Few of them support the use
128 of a local DNS cache.
130 Resolvconf (555) has been written in order to provide a framework for managing
131 the resolv.conf file in an way that avoids the above problems.
133 HOWTO
134 ~~~~~
135 Resolvconf works with most interface configurers in Debian ('(*)' below
136 meaning "with some manual configuration"): 
138    isc-dhcp-client, dhcpcd, pump, udhcpc
139    ppp
140    ifupdown
141    network-manager
143 DNS caches:
145    bind9(*), djbdns dnscache, dnsmasq, nscd, pdnsd
147 DNS recursing nameservers:
149    bind9(*), pdns-recursor(*)
151 and with any program that uses a DNS client library that consults
152 /etc/resolv.conf to obtain its list of nameservers:
154    the GNU C Library resolver library
155    adns
156    the djbdns resolver library
157    FireDNS
159 Take the following steps to set things up.  Unfortunately, it is not always
160 simply a matter of installing the resolvconf package -- especially if you have
161 already tried to deal with the above problems locally by customizing your
162 configuration.
164 1. You may have already installed resolvconf at this point.  OK.
165 2. Stop obsolete programs from writing to /etc/resolv.conf
166   * netenv
167     + Purge or make sure that /sbin/netenv hasn't been configured such
168       that it overwrites /etc/resolv.conf
169   * switchconf
170     + Purge or make sure that there are no resolv.conf files under the
171       /etc/switchconf/ directory
172   * xisp
173     + Purge
174   * divine
175     + Purge
176   * intuitively
177     + Purge
178   * laptop-netconf
179     + Purge
180   * whereami
181       Purge or make sure that you aren't using the "setresolver",
182       "bind-forwarders" or "setdnsmasq" utility scripts.
183   * etc.
184       Delete or disable local scripts of any kind that futz with
185       /etc/resolv.conf
186 3. Configure packages not to overwrite /etc/resolv.conf and to work
187    properly with resolvconf
188   3.1 ppp
189     * Make sure that the usepeerdns option is used.  With this option,
190       pppd will obtain nameserver addresses from the peer and these will
191       be added to resolvconf's database.
192   3.2 pump
193     * Make sure that neither the nodns nor the noresolvconf option is
194       used -- either in pump.conf or on the command line
195   3.3 dhcpcd
196     * Make sure that SET_DNS is not set anywhere in /etc/dhcpc/config .
197       (In recent versions of dhcpcd, on initial installation, SET_DNS
198       is not set.)
199   3.4 ifupdown
200     * Remove any "up" or "down" commands from /etc/network/interfaces
201       that futz with /etc/resolv.conf and remove any scripts from
202       /etc/network/if-*.d/ that futz with /etc/resolv.conf.
203     * For each inet static logical interface through which a nameserver is
204       accessible, add lines like the following to /etc/network/interfaces .
206           dns-nameservers 11.22.33.44 55.66.77.88
207           dns-search foo.org bar.com
209       Other recognized option words are 'dns-domain' and 'dns-sortlist'.
210       These option names correspond to the option names used in the
211       resolv.conf file with one exception: whereas one lists several
212       nameserver addresses in /etc/resolv.conf on several "nameserver"
213       lines, here one should list them all on a single "dns-nameservers"
214       line.  See resolv.conf(5) for more information.  The lines entered
215       in /etc/network/interfaces will be added to the resolver
216       configuration file (without the "dns-" prefix, of course) when a
217       physical interface is brought up as that logical interface.
218       Note that the resolver configuration is updated AFTER all the "up"
219       commands have been run; therefore "up" commands cannot make use of
220       nameservers listed on "dns-nameservers" lines in the same logical
221       interface stanza.  Changing this will require modifying ifupdown
222       so that it talks to resolvconf; currently resolvconf hooks into
223       ifupdown using the script /etc/network/if-up.d/000resolvconf. Note
224       too that scripts in /etc/network/if-up.d/ CAN make use of the
225       added nameservers because those scripts run after 000resolvconf.
226   3.5 bind9
227     * To make bind9 supply its nameserver address 127.0.0.1 to resolvconf,
228       set RESOLVCONF=yes in /etc/default/bind9.
229     * To make bind9 use nameserver addresses supplied by other sources as
230       addresses of forwarders, either (1) pursuade the maintainers of the
231       bind9 package to implement this feature (as already requested at
232       http://bugs.debian.org/483098) or (2) add a hook script to
233       /etc/resolvconf/update.d/ which writes out a configuration file
234       fragment and then tells named to re-read is configuration.  A sample
235       hook script meeting this description has been provided in
236       /usr/share/doc/resolvconf/resolvconf-update-bind.
237 4. Install the resolvconf package if you have not already done so.
238    If you have already done so then consider dpkg-reconfigure'ing it.
239    Agree to symlink /etc/resolv.conf to /etc/resolvconf/run/resolv.conf.
240    You can decline the offer to append the original static resolver
241    configuration file to the end of the dynamically generated resolver
242    configuration file because you have already modified
243    /etc/network/interfaces as directed above.
244 5. Reboot
245 6. Check /etc/resolv.conf to make sure that its contents make sense.
247 If /etc/resolv.conf is not symlinked to /etc/resolvconf/run/resolv.conf then
248 a warning message will be printed when /sbin/resolvconf is run.  If you want
249 to keep resolvconf installed but for some reason do not want /etc/resolv.conf
250 to be symlinked to /etc/resolvconf/run/resolv.conf then you can disable the
251 warning message by setting REPORT_ABSENT_SYMLINK=no in
252 /etc/default/resolvconf.
254 Order of entries in resolv.conf
255 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
256 Some of the information in the resolver configuration file consists of a set
257 of entries whose order is significant.  Specifically, the order of nameserver
258 lines
260     nameserver x1.x2.x3.x4
261     nameserver y1.y2.y3.y4
263 determines the order in which nameservers are consulted and the order of items
264 on the search line
266     search da1.da2.org db1.db2.com
268 determines the order in which domain names are tried.
270 Resolvconf orders these entries according to the names of the interfaces to
271 which they relate.  (More truthfully, it orders them according to the record
272 names in which they are stored, but it is a convention that records are named
273 like the interfaces for which they are the records, possibly with some suffix.)
274 The particular order is determined by the /etc/resolvconf/interface-order file.
275 See interface-order(5) for more information.
277 If you use ifrename, nameif or udev in order to assign stable names to your
278 network interfaces, I recommend that you employ names that begin with the
279 traditional pattern but differ from those names that the kernel uses as
280 defaults.  E.g., the kernel names Ethernet interfaces 'eth0', 'eth1', and so
281 on, so you might rename your Ethernet interfaces to "eth_3com", "eth_cisco",
282 etc.  Similarly you might rename your Wi-Fi interfaces "wlan_airo" and
283 "wlan_atmel".  If you follow this advice then you won't have to modify the
284 default interface-order file.
286 Using a static file to order the entries is obviously not very flexible;
287 however, it is adequate in most usage situations.  Situations for which it is
288 not adequate are generally situations in which it is better to use a local
289 caching nameserver that can do things like monitoring and load balancing.
291 Requirements
292 ~~~~~~~~~~~~
293 I hope that resolvconf satisfies the following requirements.
294 * Be opaque
295     Resolvconf must be as opaque as possible.  It must have a stable
296     interface and mustn't require that maintainers know about its
297     internals.
298 * Be order-independent
299     Interfaces going up and down in arbitrary order must be handled
300     properly.
301 * Be locally configurable
302     Administrator choices must be respected.
303 * Support DNS caches
304     Local DNS cache programs must be able to arrange for nameserver
305     addresses supplied by interfaces to be passed to them for use as
306     forwarders.  The libc resolver should use any local DNS caches that
307     are available.
308 * Be compatible with a read-only root filesystem
309     Variable files must be easily relocated out of /etc/.
310 * Be portable
311 * Be simple
313 Technical overview
314 ~~~~~~~~~~~~~~~~~~
315 * The /etc/resolvconf/ directory contains:
316   + resolv.conf.d/
317     Files related to the libc resolv.conf file
318     - resolv.conf.d/head
319       The head of the dynamically generated resolv.conf
320     - resolv.conf.d/tail
321       The tail of the dynamically generated resolv.conf
322     - resolv.conf.d/base
323       Information always included in the resolv.conf file.  Dynamic
324       information gets merged with this information.  E.g., if base
325       contains 'search a.b.c' and another record is added that contains
326       'search x.y.z' then the resulting file will have
327       'search a.b.c x.y.z'.
328   + run/
329     Directory where run time files are stored.  This can be replaced by
330     a symlink if the admin so desires.  Standardly this is a symlink to
331     /run/resolvconf/.
332   + update.d/
333     Scripts to run when nameserver information is updated
334   + update-libc.d/
335     Scripts to run when the resolv.conf file changes
336 * Symlink /etc/resolv.conf -> /etc/resolvconf/run/resolv.conf
337 * Configurers of interfaces call /sbin/resolvconf to provide
338   resolv.conf-like information after the interface is brought up.  They
339   call it again to delete the information when the interface is brought
340   down.  /sbin/resolvconf then does the equivalent of
341   "/etc/init.d/resolvconf reload".
342 * "/etc/init.d/resolvconf reload" calls scripts in
343   /etc/resolvconf/update.d/ which update DNS cache configuration file
344   fragments, reload daemons and regenerate /etc/resolv.conf.  If
345   the latter has changed then scripts in /etc/resolvconf/update-libc.d/
346   are run.
348 Usage information for developers
349 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
350 Interface configurers send resolver information to resolvconf in the format
351 of the familiar /etc/resolv.conf file.  Thus, for example, a program foo that
352 has configured interface $IFACE would do the following after generating a
353 resolv.conf file named 'new-resolv.conf'.
355       resolvconf -a "${IFACE}.foo" < new-resolv.conf
357 This command updates the resolver information related to interface $IFACE and
358 configurer foo.  Any information previously sent for this interface/configurer
359 combination is overwritten.  On bringing the interface down, the configurer
360 (foo) would do the following.  
362       resolvconf -d "${IFACE}.foo"
364 For another example, the proxy script for pppd forwards to resolvconf the
365 resolver information that is made available to ip-up.d/ and ip-down.d/ scripts
366 in environment variables DNS1, etc.
368       echo "nameserver $DNS1" | resolvconf -a "${IFACE}.pppd"
370 For additional examples, look at the hook scripts for isc-dhcp-client and
371 ifupdown.  Support for other configurers including dhcpcd, pump and udhcpc has
372 been added to those packages.
374 In general, any package that currently overwrites /etc/resolv.conf can be
375 adapted to work with resolvconf while preserving backward compatibility by
376 introducing a code fragment like the following.
378     MYNAME=foo
379     if [ -x /sbin/resolvconf ] ; then
380       if [ "$DIRECTION" = "up" ] ; then
381          echo -n "$RESOLVINFO" | /sbin/resolvconf -a "${IFACE}.${MYNAME}"
382       else
383          /sbin/resolvconf -d "${IFACE}.${MYNAME}"
384       fi
385     else
386          # Do clever things to /etc/resolv.conf
387     fi
389 /sbin/resolvconf stores the information sent to it and then runs the scripts
390 in /etc/resolvconf/update.d/ .  One of the latter generates the libc resolver
391 configuration file.  Others generate lists of forwarders for dnsmasq or pdnsd
392 to use.  Any other program that needs to take action when resolver information
393 is updated could likewise employ a script in /etc/resolvconf/update.d/ .
395 Usage information for maintainers
396 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
397 Normally, when the resolvconf package is installed the resolvconf program
398 takes control of /etc/resolv.conf.  It derives the contents of that file from
399 nameserver information that has been sent to it, as described above.
401 Resolvconf is not part of the base system.  It is generally installed after
402 the system has fully booted.  At that point interface configurers have already
403 configured interfaces and obtained nameserver information.  Caching
404 nameservers may also have started.  Because resolvconf is installed only
405 later, the latter programs have (obviously) not sent their nameserver
406 information to resolvconf.  This means that after installation resolvconf
407 does not have complete nameserver information.  The most reliable solution to
408 this problem is to reboot.  But Debian rightly frowns on requirements to
409 reboot, so the resolvconf package has been so designed that it partially
410 addresses the problem just mentioned, as described below.  In the future the
411 problem may be fully solved, but this will require the cooperation of other
412 Debian package maintainers.
414 In order partially to address the problem of resolvconf having incomplete
415 information after installation until the first reboot, resolvconf includes
416 the entire contents of the original (i.e., pre-resolvconf-installation)
417 resolv.conf in its database.  Consequently, nameserver addresses are not lost
418 when resolvconf is installed.  Unfortunately this also means that those
419 addresses are not removed when interfaces are brought down.
421 Another way the resolvconf package addresses the problem is to allow other
422 parties to call /sbin/resolvconf as soon as it appears in the filesystem:
423 nameserver information can be registered with resolvconf before the
424 resolvconf's postinst runs.  This means that when, for example, dnsmasq and
425 resolvconf are installed in the same dpkg run, and dnsmasq happens to be
426 configured first, dnsmasq can still successfully register its nameserver
427 address with resolvconf.
429 The correct and complete way to solve the problem is for all suppliers of
430 nameserver information to supply their information to resolvconf after
431 resolvconf has been installed.
433 As of resolvconf release 1.55 this is supported via the following mechanism.
434 Any package, foo, that supports supplying information to resolvconf should
435 include a hook script /usr/lib/resolvconf/dpkg-event.d/foo which, when called
436 with the argument "install", takes whatever actions are necessary to cause the
437 program(s) in foo to supply their nameserver information to resolvconf; and
438 when called with the argument "remove" takes whatever actions are appropriate
439 given that the resolvconf package has been removed (and, in being removed, may
440 have removed foo's nameserver information).
442 The hook script thus has the following form.
444     #!/bin/sh
445     #
446     # /usr/lib/resolvconf/dpkg-event.d/foo
447     #
448     # The resolvconf dpkg-event hook script for the foo package
449     #
450     if foo_is_running ; then
451         if [ "$1" = "install" ] ; then
452             foo-ctrl send-nameserver-info-to-resolvconf
453         elif [ "$1" = "remove" ] ; then
454             ...
455         fi
456     fi
458 If foo is controlled by an initscript whose methods take appropriate actions
459 conditional upon resolvconf's presence then something like the following might
460 be appropriate.
462         force_reload_foo() {
463             if which invoke-rc.d >/dev/null 2>&1 ; then
464                 invoke-rc.d foo force-reload
465             elif [ -x /etc/init.d/foo ] ; then
466                 /etc/init.d/foo force-reload
467             fi
468         }
469         case "$1" in
470             install|remove) force_reload_foo ;;
471         esac
473 The hook script is called (with argument "install") from resolvconf's postinst
474 "configure" method and (with "remove") from resolvconf's postrm "remove"
475 method.
477 Foo's hook script is called with argument "install" if and only if foo is
478 fully installed both when resolvconf's preinst install runs and when its
479 postinst configure runs.  The hook script is called with argument "remove" if
480 and only if foo is fully installed when resolvconf's postrm remove runs.
482 The hook script must be owned by root and have its execute permission bit set
483 and must have the same name as the package that owns it.
485 Arguments other than "install" and "remove" are reserved for future use and
486 must be silently ignored.
488 Usage information for administrators
489 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
490 The generation of the resolv.conf file can be controlled by editing the
491 /etc/resolvconf/update.d/libc script.  Different strategies can be followed.
492 For example, one possible strategy would be to put only the most recently
493 provided information into resolv.conf .  The current default strategy is to
494 put *all* available resolver information into resolv.conf, ordered by
495 interface type as listed in the interface-order(5) file, except that no
496 addresses are listed after a loopback address.
498 The admin can of course disable resolv.conf automagic by deleting the
499 /etc/resolv.conf symlink and putting a static file at that location.
501 Once you have installed resolvconf properly you don't normally need to run
502 /sbin/resolvconf from the command line.  However, I once encountered a
503 situation in which I did that.  Perhaps it is a useful illustration.  My ISP's
504 nameserver went down and thus my caching nameserver could not resolve names.
505 I knew of another host belonging to by ISP that I could use so I simply did:
507     # echo "nameserver ww.xx.yy.zz" | resolvconf -a dummy
509 This added the necessary nameserver line to /etc/resolv.conf and to dnsmasq's
510 nameserver list.  When my ISP's regular nameserver was fixed I did:
512     # resolvconf -d dummy
514 to restore the original situation.
516 FAQ
517 ~~~
518 Q. Why call it 'resolvconf' instead of 'update-resolver' or so?
519 A. Debian's update-* commands are mostly maintainer programs that update
520    static configuration files in /etc/.  Mostly they run at package
521    install time.  Resolvconf, in contrast, is a run-time configurer.
523 Q. Why use 'dns-nameservers' instead of 'dns-nameserver' as the option
524    name in /etc/network/interfaces?
525 A. Because 'dns-nameservers' can take several address arguments whereas
526    the 'nameserver' line in /etc/resolv.conf can take only a single
527    argument, and because there can be only one instance of any given
528    option in a logical interface definition.
530 TODO
531 ~~~~
532   * bind9
533     # 483098: bind9: Please add resolvconf hook script to update
534       forwarders list
535       - NO REPLY for over a year
536     # 641714: Please add resolvconf packaging-event hook script
537       - NO REPLY for over a year
538   * dnscache-run (from djbdns)
539     # 582755: Add resolvconf support
540       - NO REPLY for several years
541   * gnome-ppp
542     # 258064: Writes to /etc/resolv.conf
543       - WORKAROUND introduced in July 2004 was to make gnome-ppp Conflict
544         with resolvconf
545   * gnome-system-tools
546     # 258553: Incompatible with resolvconf
547       - NO ACTION for several years
548   * ifupdown
549     + Handle dns-* commands natively so that the resolver is configured
550       before "up" commands are run
551   * isc-dhcp-client
552     # 700966: Please add resolvconf packaging-event hook script
553       - SUBMITTED
554   * kppp
555     # 695121; LP#1086336: Writes to /etc/resolvconf
556       - SUBMITTED
557   * libadns1
558     + It consults resolv.conf so it should already be supported.
559       However, someone should test it.
560   * libares0
561     + It consults resolv.conf so it should already be supported.
562       However, someone should test it.
563   * libdjbdns1
564     + It consults resolv.conf so it should already be supported.
565       However, someone should test it.
566     + Someone should investigate whether it could be supported better.
567       Perhaps /etc/dnsrewrite should be dynamically updated?
568   * libfiredns0.9
569     + It consults resolv.conf so it should already be supported.
570       However, someone should test it.
571     + Someone should investigate whether it could be supported better.
572       Perhaps /etc/firedns.conf should be dynamically updated?
573   * maradns
574     # 608946: resolvconf integration
575       - Its initscript should probably do
576             echo "nameserver 127.0.0.1" | resolvconf -a lo.maradns
577         as dnsmasq and pdnsd do.
578       - Could it have an update script that sets the "upstream_servers"
579         variable?
580       - Tagged WONTFIX since the maintainer doesn't have any free time
581   * Net::DNS
582     + It consults resolv.conf so it should already be supported.
583       However, someone should test it.
584     + Someone should investigate whether it could be supported better.
585   * network-manager
586     # 639803: Please add resolvconf packaging-event hook script
587       - NO REPLY for over a year
588   * nscd
589     # 266817: Please suggest resolvconf
590       - Tagged WONTFIX
591     # 700385: Invalidate hosts cache on resolv.conf change, or
592               include resolvconf update script to invalidate it
593       - SUBMITTED
594   * pdns-recursor
595     # 700850: Please add resolvconf packaging-event hook script
596       - SUBMITTED
597   * pdnsd
598     # 628846: Please add resolvconf packaging-event hook script
599       - NO REPLY for over a year
600   * ppp
601     # 208095: Please suggest resolvconf
602       - Tagged WONTFIX
603   * resolvconf
604     + See http://bugs.debian.org/resolvconf
605   * systemconfigurator
606     # 272475: Please support resolvconf
607       - NO REPLY for many years
608   * Users of resolver libraries
609     + For any package that contains a program that uses resolver(3) or a
610       compatible library, add a /etc/resolvconf/update-libc.d/ script to
611       notify running instances of the program that the resolver
612       configuration file has changed.
614 DONE
615 ~~~~
616   * bind
617     + Drop support for this obsolete version of BIND
618       - DONE in resolvconf 1.48
619       - bind is now gone from Debian
620   * bind9
621     + Create script /etc/resolvconf/update.d/bind to:
622       . Convert /etc/bind/named.options.sed into /var/run/bind/named.options
623         (which is to be included in /etc/bind/named.conf)
624       . Then run "/etc/init.d/bind9 reload" or "/etc/init.d/bind reload"
625       - DONE in resolvconf package
626     # 199255: Please support resolvconf
627       - DONE in 1:9.2.3-1
628     # 252232: Please use 'lo.named' as resolvconf record name
629       - DONE in 1:9.3.2-2
630     # 252285: Please Suggest resolvconf
631       - DONE in 1:9.4.2-2
632   * debian-installer
633     # 255187: Please add resolvconf support
634       - DONE in version netcfg/0.71
635   * dhcp3-client
636     + Use resolvconf via /etc/dhcp3/dhclient-enter-hooks
637       - DONE in resolvconf package
638     # 171798: dhclient-script should source hook scripts, not run-parts them
639       - DONE in 3.0+3.0.1rc11-5
640   * dhcp-client
641     # 248399: Needs resolvconf support
642       - DONE in 2.0pl5-18
643   * dhcpcd
644     + Support resolvconf without requiring local changes
645       - DONE in 1:1.3.22pl4-7
646   * dnsmasq
647     + Create script /etc/resolvconf/update.d/dnsmasq to
648       generate /var/run/dnsmasq/resolv.conf
649       - DONE in resolvconf package
650     + Support resolvconf without requiring local changes 
651       - DONE in 1.13-2
652     + Include /etc/resolvconf/update.d/dnsmasq
653       - DONE in 1.13-3
654     # 628003, #641717: Add resolvconf packaging-event hook script
655       - DONE in 2.58-3
656   * fetchmail
657     + Use resolvconf to trigger restart on change of nameserver info
658       - DONE in 6.2.5-4
659   * ifupdown
660     + Use resolvconf via /etc/network/if-(up|down).d/
661       - DONE in resolvconf package
662   * laptop-net
663     + Use resolvconf instead of overwriting /etc/resolv.conf .
664       - DONE in 2.21-1
665   * pcmcia-cs
666     # 212823: pcmcia-cs: please add support for the resolvconf package
667       - DONE in 3.2.5-1
668   * pdns-recursor
669     # 308677: /etc/init.d/pdns-recursor: Please add resolvconf calls
670       - DONE in 2.9.18-4
671   * pdns-server
672     # 304528: Please add resolvconf update script in order to automate
673       the creation of the recursors list
674       - DONE in 2.9.18-4
675   * pdnsd
676     # 247946: Fix resolvconf support
677       - DONE in pdnsd 1.1.10par-4
678   * postfix
679     # 212552: Please reload on change of /etc/resolv.conf
680       - DONE in 2.0.16-4
681   * ppp
682     + Use resolvconf via /etc/ppp/ip-(up|down).d/
683       - DONE in resolvconf package
684   * pppconfig
685     # 242092: Disable pppconfig's futzing with /etc/resolv.conf
686       - DONE in 2.3.1
687     # 266819: Please suggest resolvconf
688       - DONE in 2.3.18+nmu3
689   * pppoeconf
690     # 212756: Eliminate /etc/ppp/ip-up.d/000usepeerdns
691       - DONE in 1.0
692   * pump
693     # 194204: Please add proper resolvconf support
694       - DONE in 0.8.15-1
695   * resolvconf
696     + Created and added to dialup and broadband tasks
697   * squid
698     # 200572: Please use resolvconf resolver-update notification
699       - DONE in 2.5.3-7
700   * totd
701     + Use resolvconf to update resolv.conf and to get updated
702       nameserver list
703   * udhcpc
704     # 302019: Please use resolvconf
705       - DONE in 0.9.8cvs20050124-3
706   * webmin-core
707     # 223483: Please play nicely with resolvconf
708       - DONE in 1.150-2
709   * webmin-wvdial
710     # 288481: Deletes symlink at /etc/resolv.conf
711       - DONE in 1.160-3
713 Credits
714 ~~~~~~~
715 The basic idea for resolvconf was expressed by Emile van Bergen on the
716 debian-devel mailing list.
718     http://lists.debian.org/debian-devel/2003/04/msg00580.html
719     http://lists.debian.org/debian-devel/2003/04/msg00629.html
721 I claim any braindamage in the implementation as my own.
723 I thank all the maintainers who have helped with this effort by adding
724 resolvconf support to their packages.
726 Werner Heuser, Joe Nahmias and Andreas Barth have been helpful sponsors.
728 This document was written by Thomas Hood <jdthood@gmail.com> using some
729 material written by John Hasler.
731 This document is part of resolvconf.