chiark / gitweb /
src/: Support IPv6 addresses in `sortlist'.
[adns] / src / adns.h
index bc7bf241980af6e699fc61311e1d0c0e4aa9e99d..79f601dc3d9360e5529dfd9d1b2f11f17f98d13f 100644 (file)
@@ -1,16 +1,17 @@
 /*
  * adns.h
- * - adns user-visible API (single-threaded, without any locking)
+ * - adns user-visible API
  */
 /*
  *
  *  This file is
- *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
+ *    Copyright (C) 1997-2000,2003,2006 Ian Jackson
  *
  *  It is part of adns, which is
- *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
- *    Copyright (C) 1999-2000 Tony Finch <dot@dotat.at>
- *  
+ *    Copyright (C) 1997-2000,2003,2006 Ian Jackson
+ *    Copyright (C) 1999-2000,2003,2006 Tony Finch
+ *    Copyright (C) 1991 Massachusetts Institute of Technology
+ *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2, or (at your option)
@@ -51,7 +52,7 @@
  *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  *
- *  $Id: adns.h,v 1.94 2006/04/07 00:25:14 ian Exp $
+ *  $Id: adns.h,v 1.96 2006/08/09 11:16:59 ian Exp $
  */
 
 #ifndef ADNS_H_INCLUDED
@@ -151,6 +152,8 @@ typedef enum {
  adns_r_rp_raw=          17,
  adns_r_rp=                  adns_r_rp_raw|adns__qtf_mail822,
 
+ adns_r_aaaa=           28,
+
  /* 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. */
@@ -354,6 +357,7 @@ typedef struct {
     adns_rr_intstr *(*manyistr);     /* txt (list strs ends with i=-1, str=0)*/
     adns_rr_addr *addr;              /* addr */
     struct in_addr *inaddr;          /* a */
+    struct in6_addr *in6addr;       /* aaaa */
     adns_rr_hostaddr *hostaddr;      /* ns */
     adns_rr_intstrpair *intstrpair;  /* hinfo */
     adns_rr_strpair *strpair;        /* rp, rp_raw */
@@ -400,6 +404,18 @@ typedef struct {
  *  requested.
  */
 
+/* Threads:
+ *  adns does not use any static modifiable state, so it
+ *   is safe to call adns_init several times and then use the
+ *   resulting adns_states concurrently.
+ *  However, it is NOT safe to make simultaneous calls into
+ *   adns using the same adns_state; a single adns_state must be used
+ *   only by one thread at a time.  You can solve this problem by
+ *   having one adns_state per thread, or if that isn't feasible, you
+ *   could maintain a pool of adns_states.  Unfortunately neither of
+ *   these approaches has optimal performance.
+ */
+
 int adns_init(adns_state *newstate_r, adns_initflags flags,
              FILE *diagfile /*0=>stderr*/);