*
* $Id$
*/
+/*
+ * This file is part of adns, which is Copyright (C) 1997, 1998 Ian Jackson
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
#ifndef ADNS_H_INCLUDED
#define ADNS_H_INCLUDED
typedef struct {
adns_status status;
char *cname; /* always NULL if query was for CNAME records */
- adns_rrtype type;
+ adns_rrtype type; /* guaranteed to be same as in query */
int nrrs, rrsz;
union {
void *untyped;
void **context_r);
/* Might return EINTR - if so, try again */
-void adns_cancel(adns_state ads, adns_query query);
+void adns_cancel(adns_query query);
int adns_finish(adns_state);
+/* You may call this even if you have queries outstanding;
+ * they will be cancelled.
+ */
int adns_callback(adns_state, int maxfd, const fd_set *readfds, const fd_set *writefds,
const fd_set *exceptfds);
* }
*/
+adns_status adns_rr_info(adns_rrtype type,
+ const char **rrtname_r, const char **fmtname_r,
+ int *len_r,
+ const void *datap, char **data_r);
+/* Gets information in human-readable (but non-i18n) form
+ * for eg debugging purposes. type must be specified,
+ * and the official name of the corresponding RR type will
+ * be returned in *rrtname_r, and information about the processing
+ * style in *fmtname_r. The length of the table entry in an answer
+ * for that type will be returned in in *len_r.
+ * Any or all of rrtname_r, fmtname_r and len_r may be 0.
+ * If fmtname_r is non-null then *fmtname_r may be
+ * null on return, indicating that no special processing is
+ * involved.
+ *
+ * data_r be must be non-null iff datap is. In this case
+ * *data_r will be set to point to a human-readable text
+ * string representing the RR data. The text will have
+ * been obtained from malloc() and must be freed by the caller.
+ *
+ * Usually this routine will succeed. Possible errors include:
+ * adns_s_nomemory
+ * adns_s_notimplemented (RR type not known)
+ * adns_s_invaliddata (*datap contained garbage)
+ * If an error occurs then no memory has been allocated,
+ * and *rrtname_r, *fmtname_r, *len_r and *data_r are undefined.
+ */
+
const char *adns_strerror(adns_status st);
#endif