From: ian Date: Tue, 4 Apr 2006 00:19:52 +0000 (+0000) Subject: initial SRV WIP - adns.h X-Git-Tag: wip.base.getaddrinfo~69 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/commitdiff_plain/3db6be7309c8f0f80d52d2fc0b9f6dc0a2514be1 initial SRV WIP - adns.h --- diff --git a/changelog b/changelog index 70ac646..2405a35 100644 --- a/changelog +++ b/changelog @@ -18,6 +18,8 @@ adns (1.1.999.0.2); urgency=medium * Provide adns_if_none and adns_qf_none (which will help with compilers which complain about plain `0' being passed where an enum is wanted). + * WIP support for SRV RRs. + -- adns (1.1.999.0.1); urgency=medium diff --git a/src/adns.h b/src/adns.h index 7dad0e6..5d5336e 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.89 2006/04/03 23:47:41 ian Exp $ + * $Id: adns.h,v 1.90 2006/04/04 00:19:52 ian Exp $ */ #ifndef ADNS_H_INCLUDED @@ -105,8 +105,8 @@ typedef enum { /* In general, or together the desired flags: */ typedef enum { 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__qtf_deref= 0x10000,/* dereference domains; perhaps get extra data */ + adns__qtf_mail822= 0x20000,/* return mailboxes in RFC822 rcpt field fmt */ adns_r_none= 0, @@ -132,6 +132,12 @@ typedef enum { adns_r_rp_raw= 17, adns_r_rp= adns_r_rp_raw|adns__qtf_mail822, + + /* For SRV records, query domain without _qf_quoteok_query must look + * as expected from SRV RFC with hostname-like Name. _With_ + * _quoteok_query, any query domain is allowed. */ + adns_r_srv_raw= 33, + adns_r_srv= adns_r_srv_raw|adns__qtf_deref, adns_r_addr= adns_r_a|adns__qtf_deref @@ -301,6 +307,16 @@ typedef struct { unsigned long serial, refresh, retry, expire, minimum; } adns_rr_soa; +typedef struct { + int priority, weight, port; + char *host; +} adns_rr_srvraw; + +typedef struct { + int priority, weight, port; + adns_rr_hostaddr ha; +} adns_rr_srvaddr; + typedef struct { adns_status status; char *cname; /* always NULL if query was for CNAME records */ @@ -321,6 +337,8 @@ typedef struct { adns_rr_inthostaddr *inthostaddr;/* mx */ adns_rr_intstr *intstr; /* mx_raw */ adns_rr_soa *soa; /* soa, soa_raw */ + adns_rr_srvraw *srvraw; /* srv_raw */ + adns_rr_srvaddr *srvaddr; /* srv */ } rrs; } adns_answer;