-/**/
+/*
+ * Copyright (C)1998 Ian Jackson.
+ * This version provided for review and comment only.
+ *
+ * $Id$
+ */
#ifndef ADNS_H_INCLUDED
#define ADNS_H_INCLUDED
adns_s_timeout,
adns_s_nolocalmem,
adns_s_allservfail,
- adns_s_serverfailure,
- adns_s_max_tempfail= 99,
+ adns_s_servfail,
+ adns_s_notimplemented,
+ adns_s_refused,
+ adns_s_reasonunknown,
adns_s_norecurse,
adns_s_serverfaulty,
- adns_s_max_localmisconfig= 199,
+ adns_s_unknownreply,
+ adns_s_max_tempfail= 99,
adns_s_inconsistent, /* PTR gives domain whose A does not match */
adns_s_cname, /* CNAME found where data eg A expected (not if _qf_loosecname) */
- adns_s_max_remotemisconfig= 299,
+ /* fixme: implement _s_cname */
+ adns_s_max_remotemisconfig= 199,
adns_s_nxdomain,
- adns_s_norecord,
- adns_s_invaliddomain
+ adns_s_nodata,
+ adns_s_invaliddomain,
+ adns_s_domaintoolong,
} adns_status;
typedef struct {
adns_status status;
char *cname; /* always NULL if query was for CNAME records */
adns_rrtype type;
- int nrrs;
+ int nrrs, rrsz;
union {
- struct in_addr *inaddr; /* a */
+ void *untyped;
+ unsigned char *bytes;
char *(*str); /* ns_raw, cname, ptr, ptr_raw, txt, <any>_mf */
+ struct in_addr *inaddr; /* a */
adns_rr_dmaddr *dmaddr; /* ns */
adns_rr_strpair *strpair; /* hinfo, rp, rp_raw */
adns_rr_intdmaddr *intdmaddr; /* mx */
* Must always be non-null pointer;
* If *query_io is 0 to start with then any query may be returned;
* If *query_io is !0 adns_query then only that query may be returned.
+ * If the call is successful, *query_io, *answer_r, and *context_r
+ * will all be set.
* Errors:
* Return values are 0 or an errno value;
* Seriously fatal system errors (eg, failure to create sockets,
* type will always be the type requested;
* If no (appropriate) requests are done adns_check returns EWOULDBLOCK;
* If no (appropriate) requests are outstanding adns_query and adns_wait return ESRCH;
- * If malloc failure occurs during internal allocation or processing
- * ands_check and _wait set *answer to 0.
*/
int adns_init(adns_state *newstate_r, adns_initflags flags, FILE *diagfile/*0=>stderr*/);
* }
*/
+const char *adns_strerror(adns_status st);
+
#endif