X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fadns.h;h=96eb0a5fd61073b66fcbf4290b717626237c46b8;hb=28de64428cfdb63ad07acfcfc254907b608d5137;hp=90c4eeb35b0bac663a53dadd099edbd55170dd92;hpb=b365d68ae5de07ef9dc4a3b92058a13edba5ad6f;p=adns.git diff --git a/src/adns.h b/src/adns.h index 90c4eeb..96eb0a5 100644 --- a/src/adns.h +++ b/src/adns.h @@ -49,6 +49,8 @@ typedef enum { 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 */ + adns_if_checkc_entex= 0x0100, /* do consistency checks on entry/exit to adns funcs */ + adns_if_checkc_freq= 0x0300, /* do consistency checks very frequently (slow!) */ } adns_initflags; typedef enum { @@ -379,6 +381,13 @@ adns_query adns_forallqueries_next(adns_state ads, void **context_r); * context_r may be 0. *context_r may not be set when _next returns 0. */ +void adns_checkconsistency(adns_state ads, adns_query qu); +/* Checks the consistency of adns's internal data structures. + * If any error is found, the program will abort(). + * You may pass 0 for qu; if you pass non-null then additional checks + * are done to make sure that qu is a valid query. + */ + /* * Example expected/legal calling sequence for submit/check/wait: * adns_init @@ -626,19 +635,24 @@ adns_status adns_rr_info(adns_rrtype type, * syntax is INET followed by the dotted quad (from inet_ntoa). * Currently only IPv4 is supported. * + * Text strings (as in adns_rr_txt) appear inside double quotes, and + * use \" and \\ to represent " and \, and \xHH to represent + * characters not in the range 32-126. + * * Hostname with addresses (adns_rr_hostaddr): this consists of the - * hostname, as usual, followed by the adns_status value (as an - * abbreviation) for the address lookup, followed by zero or more + * hostname, as usual, followed by the adns_status value, as an + * abbreviation, and then a descriptive string (encoded as if it were + * a piece of text), for the address lookup, followed by zero or more * addresses enclosed in ( and ). If the result was a permanent * failure, then a single ? appears instead of the ( ). If the * result was a temporary failure then an empty pair of parentheses * appears (which a space in between). For example, one of the NS - * records for greenend.org.uk comes out like - * ns.chiark.greenend.org.uk ok ( INET 195.224.76.132 ) + * records for greenend.org.uk comes out like + * ns.chiark.greenend.org.uk ok "OK" ( INET 195.224.76.132 ) * an MX referring to a nonexistent host might come out like: - * 50 sun2.nsfnet-relay.ac.uk nxdomain ( ) + * 50 sun2.nsfnet-relay.ac.uk nxdomain "No such domain" ( ) * and if nameserver information is not available you might get: - * dns2.spong.dyn.ml.org timeout ? + * dns2.spong.dyn.ml.org timeout "DNS query timed out" ? */ const char *adns_strerror(adns_status st);