X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fadns.h;h=3bb63e026956700835c769e533050f545f9c17ab;hb=814cee186999a6e9a76ab970f891347c1e42b132;hp=c75dbb6014b168bf5fd842fbdbf6ca220356922f;hpb=138722f000939e5a176b27d498c76681bdf04860;p=adns.git diff --git a/src/adns.h b/src/adns.h index c75dbb6..3bb63e0 100644 --- a/src/adns.h +++ b/src/adns.h @@ -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, @@ -48,11 +45,8 @@ * * 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,/* % 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: *