aboutsummaryrefslogtreecommitdiff
path: root/resolv/README
diff options
context:
space:
mode:
Diffstat (limited to 'resolv/README')
-rw-r--r--resolv/README152
1 files changed, 0 insertions, 152 deletions
diff --git a/resolv/README b/resolv/README
deleted file mode 100644
index c50025168c..0000000000
--- a/resolv/README
+++ /dev/null
@@ -1,152 +0,0 @@
-The resolver in the GNU C Library
-*********************************
-
-Starting with version 2.2, the resolver in the GNU C Library comes
-from BIND 8. Only a subset of the src/lib/resolv part of libbind is
-included here; basically the parts that are needed to provide the
-functionality present in the resolver from BIND 4.9.7 that was
-included in the previous release of the GNU C Library, augmented by
-the parts needed to provide thread-safety. This means that support
-for things as dynamic DNS updates and TSIG keys isn't included. If
-you need those facilities, please take a look at the full BIND
-distribution.
-
-
-Differences
-===========
-
-The resolver in the GNU C Library still differs from what's in BIND
-8.2.3-T5B:
-
-* The RES_DEBUG option (`options debug' in /etc/resolv.conf) has been
- disabled.
-
-* The resolver in glibc allows underscores in domain names.
-
-* The <resolv.h> header in glibc includes <netinet/in.h> and
- <arpa/nameser.h> to make it self-contained.
-
-* The `res_close' function in glibc only tries to close open files
- referenced through `_res' if the RES_INIT bit is set in
- `_res.options'. This fixes a potential security bug with programs
- that bogusly call `res_close' without initialising the resolver
- state first. Note that the thread-safe `res_nclose' still doesn't
- check the RES_INIT bit. By the way, you're not really supposed to
- call `res_close/res_nclose' directly.
-
-* The resolver in glibc can connect to a nameserver over IPv6. Just
- specify the IPv6 address in /etc/resolv.conf. You cannot change the
- address of an IPv6 nameserver dynamically in your program though.
-
-
-Using the resolver in multi-threaded code
-=========================================
-
-The traditional resolver interfaces `res_query', `res_search',
-`res_mkquery', `res_send' and `res_init', used a static (global)
-resolver state stored in the `_res' structure. Therefore, these
-interfaces are not thread-safe. Therefore, BIND 8.2 introduced a set
-of "new" interfaces `res_nquery', `res_nsearch', `res_nmkquery',
-`res_nsend' and `res_ninit' that take a `res_state' as their first
-argument, so you can use a per-thread resolver state. In glibc, when
-you link with -lpthread, such a per-thread resolver state is already
-present. It can be accessed using `_res', which has been redefined as
-a macro, in a similar way to what has been done for the `errno' and
-`h_errno' variables. This per-thread resolver state is also used for
-the `gethostby*' family of functions, which means that for example
-`gethostbyname_r' is now fully thread-safe and re-entrant. The
-traditional resolver interfaces however, continue to use a single
-resolver state and are therefore still thread-unsafe. The resolver
-state is the same resolver state that is used for the initial ("main")
-thread.
-
-This has the following consequences for existing binaries and source
-code:
-
-* Single-threaded programs will continue to work. There should be no
- user-visible changes when you recompile them.
-
-* Multi-threaded programs that use the traditional resolver interfaces
- in the "main" thread should continue to work, except that they no
- longer see any changes in the global resolver state caused by calls
- to, for example, `gethostbyname' in other threads. Again there
- should be no user-visible changes when you recompile these programs.
-
-* Multi-threaded programs that use the traditional resolver interfaces
- in more than one thread should be just as buggy as before (there are
- no problems if you use proper locking of course). If you recompile
- these programs, manipulating the _res structure in threads other
- than the "main" thread will seem to have no effect though.
-
-* In Multi-threaded that manipulate the _res structure, calls to
- functions like `gethostbyname' in threads other than the "main"
- thread won't be influenced by the those changes anymore.
-
-We recommend to use the new thread-safe interfaces in new code, since
-the traditional interfaces have been deprecated by the BIND folks.
-For compatibility with other (older) systems you might want to
-continue to use those interfaces though.
-
-
-Using the resolver in C++ code
-==============================
-
-There resolver contains some hooks which will allow the user to
-install some callback functions that make it possible to filter DNS
-requests and responses. Although we do not encourage you to make use
-of this facility at all, C++ developers should realise that it isn't
-safe to throw exceptions from such callback functions.
-
-
-Source code
-===========
-
-The following files come from the BIND distribution (currently version
-8.2.3-T5B):
-
-src/include/
- arpa/nameser.h
- arpa/nameser_compat.h
- resolv.h
-
-src/lib/resolv/
- herror.c
- res_comp.c
- res_data.c
- res_debug.c
- res_debug.h
- res_init.c
- res_mkquery.c
- res_query.c
- res_send.c
-
-src/lib/nameser/
- ns_name.c
- ns_netint.c
- ns_parse.c
- ns_print.c
- ns_samedomain.c
- ns_ttl.c
-
-src/lib/inet/
- inet_addr.c
- inet_net_ntop.c
- inet_net_pton.c
- inet_neta.c
- inet_ntop.c
- inet_pton.c
- nsap_addr.c
-
-src/lib/isc/
- base64.c
-
-Some of these files have been optimised a bit, and adaptations have
-been made to make them fit in with the rest of glibc.
-
-res_libc.c is home-brewn, although parts of it are taken from res_data.c.
-
-res_hconf.c and res_hconf.h were contributed by David Mosberger, and
-do not come from BIND.
-
-The files gethnamaddr.c, mapv4v6addr.h and mapv4v6hostent.h are
-leftovers from BIND 4.9.7.