X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fadns.h;h=343501d109e9435fe67f131d6e1c8bcee60084b6;hb=06f8e611d7be5a4c745396f423ab5cd6cdc6bfdd;hp=6643864eb377d0e944c5e1f6f048723d3fc68f74;hpb=4b2c4f8a37e33604c1aeddafe49b7c33089692a4;p=adns.git diff --git a/src/adns.h b/src/adns.h index 6643864..343501d 100644 --- a/src/adns.h +++ b/src/adns.h @@ -90,7 +90,7 @@ typedef enum { adns_qf_search= 0x00000001, /* use the searchlist */ adns_qf_usevc= 0x00000002, /* use a virtual circuit (TCP connection) */ adns_qf_owner= 0x00000004, /* fill in the owner field in the answer */ - adns_qf_quoteok_query= 0x00000010, /* allow quote-requiring chars in query domain */ + adns_qf_quoteok_query= 0x00000010, /* allow special chars in query domain */ adns_qf_quoteok_cname= 0x00000000, /* allow ... in CNAME we go via - now default */ adns_qf_quoteok_anshost= 0x00000040, /* allow ... in things supposed to be hostnames */ adns_qf_quotefail_cname= 0x00000080, /* refuse if quote-req chars in CNAME we go via */ @@ -142,11 +142,19 @@ typedef enum { * In queries _with_ qf_quoteok_*, domains in the query or response * may contain any characters, quoted according to RFC1035 5.1. On * input to adns, the char* is a pointer to the interior of a " - * delimited string, except that " may appear in it, and on output, - * the char* is a pointer to a string which would be legal either - * inside or outside " delimiters, and any characters not usually - * legal in domain names will be quoted as \X (if the character is - * 33-126 except \ and ") or \DDD. + * delimited string, except that " may appear in it unquoted. On + * output, the char* is a pointer to a string which would be legal + * either inside or outside " delimiters; any character which isn't + * legal in a hostname (ie alphanumeric or hyphen) or one of _ / + + * (the three other punctuation characters commonly abused in domain + * names) will be quoted, as \X if it is a printing ASCII character or + * \DDD otherwise. + * + * (The characters which will be unquoted are the printing 7-bit ASCII + * characters except the punctuation characters " ( ) @ ; $ \ + + * I.e. unquoted characters are alphanumerics, and the following + * punctuation characters: ! # % ^ & * - _ = + [ ] { } * * If the query goes via a CNAME then the canonical name (ie, the * thing that the CNAME record refers to) is usually allowed to @@ -503,6 +511,19 @@ int adns_submit_reverse(adns_state ads, * addr->sa_family must be AF_INET or you get ENOSYS. */ +int adns_submit_reverse_any(adns_state ads, + const struct sockaddr *addr, + const char *rzone, + adns_rrtype type, + adns_queryflags flags, + void *context, + adns_query *query_r); +/* For RBL-style reverse `zone's; look up + * . + * Any type is allowed. _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; * they will be cancelled. @@ -642,7 +663,7 @@ void adns_beforeselect(adns_state ads, int *maxfd, fd_set *readfds, * for adns_firsttimeout. readfds, writefds, exceptfds and maxfd_io may * not be 0. * - * If *now is not 0 then this will never actually do any I/O, or + * If now is not 0 then this will never actually do any I/O, or * change the fds that adns is using or the timeouts it wants. In any * case it won't block. */ @@ -789,9 +810,9 @@ adns_status adns_rr_info(adns_rrtype type, * 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 + * addresses enclosed in ( and ). If the result was a temporary * failure, then a single ? appears instead of the ( ). If the - * result was a temporary failure then an empty pair of parentheses + * result was a permanent 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 "OK" ( INET 195.224.76.132 )