chiark / gitweb /
initial SRV WIP - adns.h
authorian <ian>
Tue, 4 Apr 2006 00:19:52 +0000 (00:19 +0000)
committerian <ian>
Tue, 4 Apr 2006 00:19:52 +0000 (00:19 +0000)
changelog
src/adns.h

index 70ac646645e19baa2af33ea76861f28fb54303c8..2405a358a7516e46fb762d59ba46272959d54c09 100644 (file)
--- 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
index 7dad0e644ba5a85761c4b2867ace5e6ccda28db0..5d5336ea86bf27ef14c2b86a333b3651cfaa1711 100644 (file)
@@ -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;