3 Copyright 2005-2008 Lennart Poettering <mznflapaf (at) 0pointer (dot)
17 This program is free software; you can redistribute it and/or modify it
18 under the terms of the GNU Lesser General Public License as published
19 by the Free Software Foundation, either version 2.1 of the License, or
20 (at your option) any later version.
22 This program is distributed in the hope that it will be useful, but
23 WITHOUT ANY WARRANTY; without even the implied warranty of
24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
25 General Public License for more details.
31 [10]Version 0.7 released; changes include: rework thread shutdown
36 [11]Version 0.6 released; changes include: save and restore h_errno in
37 addition to errno; drop usage of pthread's cancelling since it is
38 problematic on some platforms.
42 [12]Version 0.5 released; changes include: fix getaddrinfo()
47 [13]Version 0.4 released; changes include: rework error handling logic,
48 add asyncns_freeanswer(), a lot of fixes
52 [14]Version 0.3 released; changes include: build fixes: properly detect
53 res_query() on Linux/AMD64, support older autoconf versions
57 [15]Version 0.2 released; changes include: res_query() support; minor
58 bug fixes; doc updates
62 [16]Version 0.1 released
66 libasyncns is a C library for Linux/Unix for executing name service
67 queries asynchronously. It is an asynchronous wrapper around
68 getaddrinfo(3), getnameinfo(3), res_query(3) and res_search(3) from
71 In contrast to GNU's asynchronous name resolving API getaddrinfo_a(),
72 libasyncns does not make use of UNIX signals for reporting completion
73 of name queries. Instead, the API exports a standard UNIX file
74 descriptor which may be integerated cleanly into custom main loops.
76 In contrast to asynchronous DNS resolving libraries like [17]libdenise,
77 [18]skadns, [19]adns, libasyncns is just an asynchronous wrapper around
78 the libc's synchronous getaddrinfo() API, which has the advantage of
79 allowing name resolution using techniques like [20]Multicast DNS, LDAP
80 or NIS using standard libc NSS (Name Service Switch) modules.
81 libasyncns is compatible with IPv6 if the underlying libc is.
83 libasyncns is very tiny, consisting of just one header and one source
84 file. It has no dependencies besides libc.
86 By default libasyncns spawns a number of worker threads (LWPs) to
87 process name queries. Alternatively or when POSIX Threads are not
88 supported, libasyncns can fork() off worker processes instead.
92 Version 0.7 is quite stable and feature complete.
94 Damien Thébault has written a Python module [21]libasyncns-python that
95 wraps the libasyncns C API.
99 You may browse the [22]Doxygen generated [23]programing documentation
100 the API. (Run make doxygen to generate this documentation from the
105 Currently, libasyncns is tested on Linux and Solaris
106 (sparc-sun-solaris2.8) only.
108 libasyncns was developed and tested on Debian GNU/Linux "testing" from
109 January 2005, it should work on most other Linux distributions (and
110 maybe Unix versions) since it uses GNU autoconf and GNU libtool for
111 source code configuration and shared library management.
113 libasyncns has no dependencies besides a libc that supports
114 getaddrinfo() and res_query().
118 As this package is made with the GNU autotools you should run
119 ./configure inside the distribution directory for configuring the
120 source tree. After that you should run make for compilation and make
121 install (as root) for installation of libasyncns.
125 Sjoerd Simons for the res_query() support.
129 The newest release is always available from
130 [24]http://0pointer.de/lennart/projects/libasyncns/
132 The current release is [25]0.7
134 Get libasyncns's development sources from the [26]GIT [27]repository
136 git clone git://git.0pointer.de/libasyncns
138 You may find an up to date Debian package of libasyncns on the
139 [29]Debian package repository.
141 If you want to be notified whenever I release a new version of this
142 software use the subscription feature of [30]Freshmeat.
143 __________________________________________________________________
146 Lennart Poettering <mznflapaf (at) 0pointer (dot) de>, October 2008
154 5. README#documentation
155 6. README#requirements
156 7. README#installation
159 10. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.7.tar.gz
160 11. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.6.tar.gz
161 12. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.5.tar.gz
162 13. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.4.tar.gz
163 14. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.3.tar.gz
164 15. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.2.tar.gz
165 16. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.1.tar.gz
166 17. http://libdenise.sourceforge.net/
167 18. http://www.skarnet.org/software/skadns/
168 19. http://www.chiark.greenend.org.uk/~ian/adns/
169 20. http://0pointer.de/lennart/projects/nss-mdns/
170 21. https://launchpad.net/libasyncns-python
171 22. http://www.doxygen.org/
172 23. http://0pointer.de/lennart/projects/libasyncns/doxygen/
173 24. http://0pointer.de/lennart/projects/libasyncns/
174 25. http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.7.tar.gz
175 26. http://git.or.cz/
176 27. git://git.0pointer.de/libasyncns
177 28. http://git.0pointer.de/?p=libasyncns.git
178 29. http://packages.debian.org/libasyncns0
179 30. http://freshmeat.net/projects/libasyncns/