X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/bddb4c18cde2446b39c84bff292619f70b2c1312..3b375d76e45c11a4c7cbcb9fcc3ca76d7e2148a6:/src/adns.h diff --git a/src/adns.h b/src/adns.h index 0f589d7..bc7bf24 100644 --- a/src/adns.h +++ b/src/adns.h @@ -51,7 +51,7 @@ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * - * $Id: adns.h,v 1.91 2006/04/04 01:21:39 ian Exp $ + * $Id: adns.h,v 1.94 2006/04/07 00:25:14 ian Exp $ */ #ifndef ADNS_H_INCLUDED @@ -104,10 +104,28 @@ typedef enum { /* In general, or together the desired flags: */ } adns_queryflags; typedef enum { - adns__rrt_typemask=0x0ffff, + adns_rrt_typemask= 0x0ffff, adns__qtf_deref= 0x10000,/* dereference domains; perhaps get extra data */ adns__qtf_mail822= 0x20000,/* return mailboxes in RFC822 rcpt field fmt */ - + + adns_r_unknown= 0x40000, + /* To use this, ask for records of type |adns_r_unknown. + * adns will not process the RDATA - you'll get adns_rr_byteblocks, + * where the int is the length and the unsigned char* points to the + * data. String representation of the RR data (by adns_rrinfo) is as in + * RFC3597. adns_rr_info will not return the type name in *rrtname_r + * (due to memory management problems); *fmtname_r will be set to + * "unknown". + * + * Do not specify adns_r_unknown along with a known RR type which + * requires domain name uncompression (see RFC3597 s4); domain names + * will not be uncompressed and the resulting data would be useless. + * Asking for meta-RR types via adns_r_unknown will not work properly + * either and may make adns complain about server misbehaviour, so don't + * do that. + * + * Don't forget adns_qf_quoteok if that's what you want. */ + adns_r_none= 0, adns_r_a= 1, @@ -315,7 +333,12 @@ typedef struct { typedef struct { int priority, weight, port; adns_rr_hostaddr ha; -} adns_rr_srvhostaddr; +} adns_rr_srvha; + +typedef struct { + int len; + unsigned char *data; +} adns_rr_byteblock; typedef struct { adns_status status; @@ -338,7 +361,8 @@ typedef struct { adns_rr_intstr *intstr; /* mx_raw */ adns_rr_soa *soa; /* soa, soa_raw */ adns_rr_srvraw *srvraw; /* srv_raw */ - adns_rr_srvhostaddr *srvhostaddr;/* srv */ + adns_rr_srvha *srvha;/* srv */ + adns_rr_byteblock *byteblock; /* ...|unknown */ } rrs; } adns_answer;