chiark / gitweb /
regress: Move case-*.in opening to shlib playback_prepare
[adns.git] / src / adns.h
index c75dbb6014b168bf5fd842fbdbf6ca220356922f..3bb63e026956700835c769e533050f545f9c17ab 100644 (file)
@@ -4,17 +4,14 @@
  */
 /*
  *
- *  This file is
- *    Copyright (C) 1997-2000,2003,2006 Ian Jackson
- *
- *  It is part of adns, which is
- *    Copyright (C) 1997-2000,2003,2006 Ian Jackson
+ *  This file is part of adns, which is
+ *    Copyright (C) 1997-2000,2003,2006,2014-2016  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)
+ *  the Free Software Foundation; either version 3, or (at your option)
  *  any later version.
  *  
  *  This program is distributed in the hope that it will be useful,
  *
  *  You should have received a copy of the GNU General Public License,
  *  or the GNU Library General Public License, as appropriate, along
- *  with this program; if not, write to the Free Software Foundation,
- *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
+ *  with this program; if not, write to the Free Software Foundation.
  *
- *  $Id$
  */
 
 #ifndef ADNS_H_INCLUDED
@@ -111,13 +105,14 @@ typedef enum { /* In general, or together the desired flags: */
 
  adns_if_permit_ipv4= 0x0400,/* allow _addr queries to return IPv4 addresses  */
  adns_if_permit_ipv6= 0x0800,/* allow _addr queries to return IPv6 addresses */
- adns_if_afmask=      0x0c00
+ adns_if_afmask=      0x0c00,
    /* These are policy flags, and overridden by the adns_af:... option in
     * resolv.conf.  If the adns_qf_want_... query flags are incompatible with
     * these settings (in the sense that no address families are permitted at
     * all) then the query flags take precedence; otherwise only records which
     * satisfy all of the stated requirements are allowed.
     */
+ adns__if_sizeforce= 0x7fff,
 } adns_initflags;
 
 typedef enum { /* In general, or together the desired flags: */
@@ -130,6 +125,7 @@ typedef enum { /* In general, or together the desired flags: */
  adns_qf_quoteok_anshost=0x00000040,/*  ... in things supposedly hostnames */
  adns_qf_quotefail_cname=0x00000080,/* refuse if quote-req chars in CNAME we go via */
  adns_qf_cname_loose=    0x00000100,/* allow refs to CNAMEs - without, get _s_cname */
+ adns_qf_cname_strict=   0x00010000,/* forbid CNAME refs (default, currently) */
  adns_qf_cname_forbid=   0x00000200,/* don't follow CNAMEs, instead give _s_cname */
 
  adns_qf_want_ipv4=     0x00000400,/* try to return IPv4 addresses */
@@ -146,7 +142,8 @@ typedef enum { /* In general, or together the desired flags: */
  adns_qf_addrlit_scope_numeric=0x00004000,/* %<scope> may only be numeric */
  adns_qf_addrlit_ipv4_quadonly=0x00008000,/* reject non-dotted-quad ipv4 */
 
- adns__qf_internalmask=  0x0ff00000
+ adns__qf_internalmask=  0x0ff00000,
+ adns__qf_sizeforce=     0x7fffffff
 } adns_queryflags;
 
 typedef enum {
@@ -194,7 +191,7 @@ typedef enum {
  adns_r_soa_raw=          6,
  adns_r_soa=                 adns_r_soa_raw|adns__qtf_mail822, 
                     
- adns_r_ptr_raw=         12, /* do not mind PTR with wrong or missing A */
+ adns_r_ptr_raw=         12, /* do not mind PTR with wrong or missing addr */
  adns_r_ptr=                 adns_r_ptr_raw|adns__qtf_deref,
                     
  adns_r_hinfo=           13,  
@@ -215,7 +212,9 @@ typedef enum {
  adns_r_srv_raw=         33,
  adns_r_srv=                 adns_r_srv_raw|adns__qtf_deref,
                     
- adns_r_addr=                adns_r_a|adns__qtf_deref
+ adns_r_addr=                adns_r_a|adns__qtf_deref,
+
+ adns__rrt_sizeforce= 0x7fffffff,
  
 } adns_rrtype;
 
@@ -316,8 +315,8 @@ typedef enum {
  adns_s_max_tempfail= 99,
 
  /* remote configuration errors */
- adns_s_inconsistent, /* PTR gives domain whose A does not exist and match */
- adns_s_prohibitedcname, /* CNAME, but eg A expected (not if _qf_loosecname) */
+ adns_s_inconsistent, /* PTR gives domain whose addr is missing or mismatch */
+ adns_s_prohibitedcname, /* CNAME, but eg A expected (not if _qf_cname_loose) */
  adns_s_answerdomaininvalid,
  adns_s_answerdomaintoolong,
  adns_s_invaliddata,
@@ -587,6 +586,12 @@ int adns_init_logfn(adns_state *newstate_r, adns_initflags flags,
  *   Lookups occur (logically) concurrently; use the `sortlist' directive to
  *   control the relative order of addresses in answers.  This option
  *   overrides the corresponding init flags (covered by adns_if_afmask).
+ *
+ *  adns_ignoreunkcfg
+ *   Ignore unknown options and configuration directives, rather than
+ *   logging them.  To be effective, appear in the configuration
+ *   before the unknown options.  ADNS_RES_OPTIONS is generally early
+ *   enough.
  * 
  * There are a number of environment variables which can modify the
  * behaviour of adns.  They take effect only if adns_init is used, and
@@ -707,8 +712,7 @@ int adns_addr2text(const struct sockaddr *sa, adns_queryflags flags,
    * port is always in host byte order and is simply copied to and
    * from the appropriate sockaddr field (byteswapped as necessary).
    *
-   * The only flags supported are adns_qf_addrlit_...; others are
-   * ignored.
+   * The only flags supported are adns_qf_addrlit_...
    *
    * Error return values are:
    *
@@ -731,6 +735,8 @@ int adns_addr2text(const struct sockaddr *sa, adns_queryflags flags,
    *
    *  EAFNOSUPPORT   sa->sa_family is not supported (addr2text only).
    *
+   *  ENOSYS    Unsupported flags set.
+   *
    * Only if neither adns_qf_addrlit_scope_forbid nor
    * adns_qf_addrlit_scope_numeric are set:
    *