summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/arlib/arlib.3
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/arlib/arlib.3')
-rw-r--r--contrib/ntp/arlib/arlib.3230
1 files changed, 230 insertions, 0 deletions
diff --git a/contrib/ntp/arlib/arlib.3 b/contrib/ntp/arlib/arlib.3
new file mode 100644
index 0000000..afdc02f
--- /dev/null
+++ b/contrib/ntp/arlib/arlib.3
@@ -0,0 +1,230 @@
+.TH arlib 3
+.SH NAME
+ar_answer, ar_close, ar_delete, ar_gethostbyname, ar_gethostbyaddr,
+ar_init, ar_open, ar_timeout - Asynchronous DNS library routines
+.SH SYNOPSIS
+.nf
+.B #include "arlib.h"
+
+.B struct hostent *ar_answer(dataptr, size)
+.B char *dataptr;
+.B int size;
+
+.B void ar_close();
+
+.B int ar_delete(dataptr, size)
+.B char *dataptr;
+.B int size;
+
+.B int ar_gethostbyname(name, dataptr, size)
+.B char *name;
+.B char *dataptr;
+.B int size;
+
+.B int ar_gethostbyaddr(name, dataptr, size)
+.B char *name;
+.B char *dataptr;
+.B int size;
+
+.B int ar_init(flags)
+.B int flags;
+
+.B int ar_open();
+
+.B long ar_timeout(time, dataptr, size)
+.B long time;
+.B char *dataptr;
+.B int size;
+.fi
+.SH DESCRIPTION
+
+.PP
+ This small library of DNS routines is intended to provide an
+asynchronous interface to performing hostname and IP number lookups.
+Only lookups of Internet domain are handled as yet. To use this
+set of routines properly, the presence of the
+.B "BIND 4.8"
+resolve
+libraries is required (or any library derived from it).
+.PP
+ This library should be used in conjunction with
+.B select(2)
+to wait for
+the name server's reply to arrive or the lookup to timeout.
+.PP
+ To open a fd for talking to the name server, either
+.B ar_open()
+or
+ar_init()
+must be used.
+.B ar_open()
+ will open either a datagram socket
+or a virtual circuit with the name server, depending on the flags
+set in the _res structure (see
+.B resolv(5)
+). In both cases, if the socket
+
+> i
+.B ar_init()
+is
+used to both open the socket (as in
+.B ar_open()
+) and initialize the
+queues used by this library. The values recognized as parameters to
+.B ar_init()
+are:
+
+.RS
+#define ARES_INITLIST 1
+.RE
+.RS
+#define ARES_CALLINIT 2
+.RE
+.RS
+#define ARES_INITSOCK 4
+.RE
+.RS
+#define ARES_INITDEBG 8
+.RE
+
+ ARES_INITLIST initializes the list of queries waiting for replies.
+ARES_CALLINIT is a flag which when set causes
+.B res_init()
+to be called.
+ARES_INITSOCK will close the current socket if it is open and call
+.B ar_open()
+to open a new one, returning the fd for that socket.
+ARES_INITDEBG sets the RES_DEBUG flag of the
+.B _res
+structure.
+ARES_INITCACH is as yet, unused and is for future use where the library
+keeps its own cache of replies.
+
+ To send a query about either a hostname or an IP number,
+.B ar_gethostbyname()
+and
+.B ar_gethostbyaddr()
+must be used. Each takes
+either a pointer to the hostname or the IP number respectively for use
+when making the query. In addition to this, both (optionally) can be
+passed a pointer to data, dataptr, with the size also passed which can
+be used for identifying individual queries. A copy of the area pointed
+to is made if dataptr is non NULL and size is non zero. These functions
+will always return NULL unless the answer to the query is found in
+internal caches. A new flag, RES_CHECKPTR is checked during the
+processing of answers for
+.B ar_gethostbyname()
+which will automatically
+cause a reverse lookup to be queued, causing a failure if that reply
+differs from the original.
+
+ To check for a query,
+.B ar_answer()
+is called with a pointer to an area
+of memory which is sufficient to hold what was originally passed via
+.B ar_gethostbyname()
+or
+.B ar_gethostbyaddr()
+through dataptr. If an answer
+is found, a pointer to the host information is returned and the data
+segment copied if dataptr is non NULL and it was originally passed. The
+size of the copied data is the smaller of the passed size and that of
+original data stored.
+
+ To expire old queries,
+.B ar_timeout()
+is called with the 'current' time
+(or the time for which you want to do timeouts for). If a queue entry
+is too old, it will be expired when it has exhausted all available avenues
+for lookups and the data segment for the expired query copied into
+dataptr. The size of the copied data is the smaller of the passed size
+and that of the original stored data. Only 1 entry is thus expired with
+each call, requiring that it be called immediately after an expiration
+to check for others. In addition to expiring lookups,
+.B ar_timeout()
+also
+triggers resends of queries and the searching of the domain tree for the
+host, the latter works from the
+.B _res
+structure of
+.B resolv(5).
+
+ To delete entries from the queue,
+.B ar_delete()
+can be used and by
+passing the pointer and size of the data segment, all queries have their
+data segments checked (if present) for an exact match, being deleted if
+and only if there is a match. A NULL pointer passed to ar_deleted()
+matches all queries which were called with a NULL dataptr parameter.
+The amount of data compared is the smaller of the size passed and that
+of the data stored for the queue entry being compared.
+
+ To close a socket opened by
+.B ar_open()
+,
+.B ar_close()
+should be used so
+that it is closed and also marked closed within this library.
+
+
+.SH DIAGNOSIS
+
+.B ar_open()
+returns -1 if a socket isn't open and could not be opened;
+otherwise returns the current fd open or the fd it opened.
+
+.B ar_init()
+returns -1 for any errors, the value returned by
+.B res_init()
+if
+.B res_init()
+was called, the return value for
+.B ar_open()
+if that was
+called or the current socket open if 0 is passed and a socket is open.
+If neither
+.B res_init()
+or
+.B ar_open()
+are called and the flags are non-zero, -2 is returned.
+
+.B ar_gethostbyaddr()
+and
+.B ar_gethostbyname()
+will always return NULL in this version but may return a pointer to a hostent
+structure if a cache is being used and the answer is found in the cache.
+
+.B ar_answer()
+returns NULL if the answer is either not found or the
+query returned an error and another attempt at a lookup is attempted.
+If an answer was found, it returned a pointer to this structure and
+the contents of the data segment copied over.
+
+.B ar_timeout()
+returns the time when it should be called next or 0 if
+there are no queries in the queue to be checked later. If any queries
+are expired, the data segment is copied over if dataptr is non NULL.
+
+.B ar_delete()
+returns the number of entries that were found to match
+and consequently deleted.
+
+.SH SEE ALSO
+
+gethostbyaddr(3), gethostbyname(3), resolv(5)
+
+.SH FILES
+.nf
+arlib.h
+/usr/include/resolv.h
+/usr/include/arpa/nameser.h
+/etc/resolv.conf
+
+.SH BUGS
+
+The results of a successful call to ar_answer() destroy the structure
+for any previous calls.
+
+.SH AUTHOR
+
+Darren Reed. Email address: avalon@coombs.anu.edu.au
OpenPOWER on IntegriCloud