Config parsing: Provide a way to ignore unknown resolv.conf contents
[adns] / src / adns.h
index 5765e55..a6599f6 100644 (file)
@@ -50,8 +50,6 @@
  *  or the GNU Library General Public License, as appropriate, along
  *  with this program; if not, write to the Free Software Foundation.
  *
- *
- *  $Id$
  */
 
 #ifndef ADNS_H_INCLUDED
@@ -110,13 +108,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: */
@@ -129,6 +128,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 */
@@ -145,7 +145,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 {
@@ -214,7 +215,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;
 
@@ -586,6 +589,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
@@ -706,8 +715,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:
    *
@@ -730,6 +738,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:
    *