X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=src%2Fadns.h;h=a29b568f33b8061de88e54b3883eb9d914f61557;hp=65edbd8306a6f29e001fbeec9b50137a0abd7d1c;hb=2c6eb096dd80e37c12ec5a301b771ff011fc00ce;hpb=2bd4b9f4167fa254b424385ee430d1402ef087b7 diff --git a/src/adns.h b/src/adns.h index 65edbd8..a29b568 100644 --- a/src/adns.h +++ b/src/adns.h @@ -104,25 +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 at all - you'll get intstr's, where - * the int is the length and the char* points to the data. String - * representation of the RR data 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". + * 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. Domain names will not be - * uncompressed and the resulting data will be useless. Asking for - * meta-RR types via adns_r_unknown will not work properly either - * and may make adns complain about server misbehaviour. - */ - + * 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, @@ -332,6 +335,11 @@ typedef struct { adns_rr_hostaddr ha; } adns_rr_srvha; +typedef struct { + int len; + unsigned char *data; +} adns_rr_byteblock; + typedef struct { adns_status status; char *cname; /* always NULL if query was for CNAME records */ @@ -350,10 +358,11 @@ typedef struct { adns_rr_intstrpair *intstrpair; /* hinfo */ adns_rr_strpair *strpair; /* rp, rp_raw */ adns_rr_inthostaddr *inthostaddr;/* mx */ - adns_rr_intstr *intstr; /* mx_raw, ...|unknown */ + adns_rr_intstr *intstr; /* mx_raw */ adns_rr_soa *soa; /* soa, soa_raw */ adns_rr_srvraw *srvraw; /* srv_raw */ adns_rr_srvha *srvha;/* srv */ + adns_rr_byteblock *byteblock; /* ...|unknown */ } rrs; } adns_answer;