* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*
- * $Id: adns.h,v 1.65 1999/10/10 13:16:24 ian Exp $
+ * $Id: adns.h,v 1.71 1999/10/15 16:55:00 ian Exp $
*/
#ifndef ADNS_H_INCLUDED
adns_if_noerrprint= 0x0002, /* never print output to stderr (_debug overrides) */
adns_if_noserverwarn= 0x0004, /* do not warn to stderr about duff nameservers etc */
adns_if_debug= 0x0008, /* enable all output to stderr plus debug msgs */
+ adns_if_logpid= 0x0080, /* include pid in diagnostic output */
adns_if_noautosys= 0x0010, /* do not make syscalls at every opportunity */
adns_if_eintr= 0x0020, /* allow _wait and _synchronous to return EINTR */
adns_if_nosigpipe= 0x0040, /* applic has SIGPIPE set to SIG_IGN, do not protect */
/* permanent errors */
adns_s_nxdomain,
- adns_s_nodata
+ adns_s_nodata,
+
+ adns_s_max_permfail= 499
} adns_status;
* values.
*
* For _wait and _check failures are reported in the answer
- * structure, and only 0, ESRCH or (for _check) EWOULDBLOCK is
+ * structure, and only 0, ESRCH or (for _check) EAGAIN is
* returned: if no (appropriate) requests are done adns_check returns
- * EWOULDBLOCK; if no (appropriate) requests are outstanding both
+ * EAGAIN; if no (appropriate) requests are outstanding both
* adns_query and adns_wait return ESRCH.
*
* Additionally, _wait can return EINTR if you set adns_if_eintr.
* requested.
*/
-int adns_init(adns_state *newstate_r, adns_initflags flags,
+int adns_init(adns_state *newstate_r, int flags /*adns_initflags*/,
FILE *diagfile /*0=>stderr*/);
-int adns_init_strcfg(adns_state *newstate_r, adns_initflags flags,
+int adns_init_strcfg(adns_state *newstate_r, int flags /*adns_initflags*/,
FILE *diagfile /*0=>discard*/, const char *configtext);
/* Configuration:
int adns_synchronous(adns_state ads,
const char *owner,
adns_rrtype type,
- adns_queryflags flags,
+ int flags /*adns_queryflags*/,
adns_answer **answer_r);
/* NB: if you set adns_if_noautosys then _submit and _check do not
int adns_submit(adns_state ads,
const char *owner,
adns_rrtype type,
- adns_queryflags flags,
+ int flags /*adns_queryflags*/,
void *context,
adns_query *query_r);
+/* The owner should be quoted in master file format. */
+
int adns_check(adns_state ads,
adns_query *query_io,
adns_answer **answer_r,
int adns_submit_reverse(adns_state ads,
const struct sockaddr *addr,
adns_rrtype type,
- adns_queryflags flags,
+ int flags /*adns_queryflags*/,
void *context,
adns_query *query_r);
-/* type must be _r_ptr or _r_ptr_raw. _qf_search is ignored. */
+/* type must be _r_ptr or _r_ptr_raw. _qf_search is ignored.
+ * addr->sa_family must be AF_INET or you get ENOSYS.
+ */
void adns_finish(adns_state ads);
/* You may call this even if you have queries outstanding;
* adns_submit 2
* adns_submit 3
* adns_wait 1
- * adns_check 3 -> EWOULDBLOCK
+ * adns_check 3 -> EAGAIN
* adns_wait 2
* adns_wait 3
* ....
int *len_r,
const void *datap, char **data_r);
/*
-
* Get information about a query type, or convert reply data to a
* textual form. type must be specified, and the official name of the
* corresponding RR type will be returned in *rrtname_r, and
const char *adns_strerror(adns_status st);
const char *adns_errabbrev(adns_status st);
+const char *adns_errtypeabbrev(adns_status st);
/* Like strerror but for adns_status values. adns_errabbrev returns
* the abbreviation of the error - eg, for adns_s_timeout it returns
- * "timeout". You MUST NOT call these functions with status values
+ * "timeout". adns_errtypeabbrev returns the abbreviation of the
+ * error class: ie, for values up to adns_s_max_XXX it will return the
+ * string XXX. You MUST NOT call these functions with status values
* not returned by the same adns library.
*/