]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2035. [func] Make falling back to TCP on UDP refresh failure
authorMark Andrews <marka@isc.org>
Sun, 4 Jun 2006 23:17:07 +0000 (23:17 +0000)
committerMark Andrews <marka@isc.org>
Sun, 4 Jun 2006 23:17:07 +0000 (23:17 +0000)
                        optional. Default "try-tcp-refresh yes;" for BIND 8
                        compatibility. [RT #16123]

CHANGES
bin/named/config.c
bin/named/named.conf.docbook
bin/named/zoneconf.c
doc/arm/Bv9ARM-book.xml
lib/bind9/check.c
lib/dns/include/dns/zone.h
lib/dns/zone.c
lib/isccfg/namedconf.c

diff --git a/CHANGES b/CHANGES
index 394b332f74ac4c6afc37e538be42b7fdb0c51d9b..2e18766996bc1e8a6140f20789105a62a1cbb48b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+2035.  [func]          Make falling back to TCP on UDP refresh failure
+                       optional. Default "try-tcp-refresh yes;" for BIND 8
+                       compatibility. [RT #16123]
+
 2034.  [bug]           gcc: set -fno-strict-aliasing. [RT #16124]
 
 2033.  [bug]           We wern't creating multiple client memory contexts
index 856d2f48dd1ec79d003bad070517d454febf7873..8d3571248f5f474a8e8d4f92221832ba5ae214ad 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: config.c,v 1.74 2006/05/03 01:54:53 marka Exp $ */
+/* $Id: config.c,v 1.75 2006/06/04 23:17:06 marka Exp $ */
 
 /*! \file */
 
@@ -178,6 +178,7 @@ options {\n\
        check-srv-cname warn;\n\
        zero-no-soa-ttl yes;\n\
        update-check-ksk yes;\n\
+       try-tcp-refresh yes; /* BIND 8 compat */\n\
 };\n\
 "
 
index 3fc54dac7e854229b9ac69b7501a9540bb522c53..2978ce1e12b5c289c43ac0d7dad89e3bf0a51f6d 100644 (file)
@@ -17,7 +17,7 @@
  - PERFORMANCE OF THIS SOFTWARE.
 -->
 
-<!-- $Id: named.conf.docbook,v 1.22 2006/05/16 06:07:09 marka Exp $ -->
+<!-- $Id: named.conf.docbook,v 1.23 2006/06/04 23:17:06 marka Exp $ -->
 <refentry>
   <refentryinfo>
     <date>Aug 13, 2004</date>
@@ -321,6 +321,7 @@ options {
 
        zone-statistics <replaceable>boolean</replaceable>;
        key-directory <replaceable>quoted_string</replaceable>;
+       try-tcp-refresh <replaceable>boolean</replaceable>;
        zero-no-soa-ttl <replaceable>boolean</replaceable>;
        zero-no-soa-ttl-cache <replaceable>boolean</replaceable>;
 
@@ -468,6 +469,7 @@ view <replaceable>string</replaceable> <replaceable>optional_class</replaceable>
        use-alt-transfer-source <replaceable>boolean</replaceable>;
 
        zone-statistics <replaceable>boolean</replaceable>;
+       try-tcp-refresh <replaceable>boolean</replaceable>;
        key-directory <replaceable>quoted_string</replaceable>;
        zero-no-soa-ttl <replaceable>boolean</replaceable>;
        zero-no-soa-ttl-cache <replaceable>boolean</replaceable>;
@@ -554,6 +556,7 @@ zone <replaceable>string</replaceable> <replaceable>optional_class</replaceable>
        use-alt-transfer-source <replaceable>boolean</replaceable>;
 
        zone-statistics <replaceable>boolean</replaceable>;
+       try-tcp-refresh <replaceable>boolean</replaceable>;
        key-directory <replaceable>quoted_string</replaceable>;
 
        ixfr-base <replaceable>quoted_string</replaceable>; // obsolete
index 4866374a837c6bb8e82ebe8034ff302851c7bd9f..72cd962542bee9c1713f264caf023b3834bed625 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zoneconf.c,v 1.133 2006/05/16 03:35:56 marka Exp $ */
+/* $Id: zoneconf.c,v 1.134 2006/06/04 23:17:06 marka Exp $ */
 
 /*% */
 
@@ -876,6 +876,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
                        alt = cfg_obj_asboolean(obj);
                dns_zone_setoption(zone, DNS_ZONEOPT_USEALTXFRSRC, alt);
 
+               obj = NULL;
+               (void)ns_config_get(maps, "try-tcp-refresh", &obj);
+               dns_zone_setoption(zone, DNS_ZONEOPT_TRYTCPREFRESH,
+                                  cfg_obj_asboolean(obj));
                break;
 
        default:
index 5bd6c312f19971d5e6c4c0166a49c0016cd29128..91ef76ec1558bd8aa2e35ccfa614eeb6342861f3 100644 (file)
@@ -18,7 +18,7 @@
  - PERFORMANCE OF THIS SOFTWARE.
 -->
 
-<!-- File: $Id: Bv9ARM-book.xml,v 1.303 2006/05/17 02:00:15 marka Exp $ -->
+<!-- File: $Id: Bv9ARM-book.xml,v 1.304 2006/06/04 23:17:06 marka Exp $ -->
 <book xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>BIND 9 Administrator Reference Manual</title>
 
@@ -4419,6 +4419,7 @@ category notify { null; };
     <optional> allow-update { <replaceable>address_match_list</replaceable> }; </optional>
     <optional> allow-update-forwarding { <replaceable>address_match_list</replaceable> }; </optional>
     <optional> update-check-ksk <replaceable>yes_or_no</replaceable>; </optional>
+    <optional> try-tcp-refresh <replaceable>yes_or_no</replaceable>; </optional>
     <optional> allow-v6-synthesis { <replaceable>address_match_list</replaceable> }; </optional>
     <optional> blackhole { <replaceable>address_match_list</replaceable> }; </optional>
     <optional> avoid-v4-udp-ports { <replaceable>port_list</replaceable> }; </optional>
@@ -5671,6 +5672,16 @@ options {
              </listitem>
            </varlistentry>
 
+           <varlistentry>
+             <term><command>try-tcp-refresh</command></term>
+             <listitem>
+               <para>
+                 Try to refresh the zone using TCP if UDP queries fail.
+                 The default is <command>yes</command>.
+               </para>
+             </listitem>
+           </varlistentry>
+
           </variablelist>
 
         </sect3>
@@ -8041,6 +8052,7 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea
     <optional> allow-transfer { <replaceable>address_match_list</replaceable> }; </optional>
     <optional> allow-update-forwarding { <replaceable>address_match_list</replaceable> }; </optional>
     <optional> update-check-ksk <replaceable>yes_or_no</replaceable>; </optional>
+    <optional> try-tcp-refresh <replaceable>yes_or_no</replaceable>; </optional>
     <optional> also-notify { <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
     <optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional>
     <optional> dialup <replaceable>dialup_option</replaceable> ; </optional>
@@ -8525,6 +8537,16 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea
                 </listitem>
               </varlistentry>
 
+             <varlistentry>
+               <term><command>try-tcp-refresh</command></term>
+                <listitem>
+                  <para>
+                    See the description of
+                    <command>try-tcp-refresh</command> in <xref linkend="boolean_options"/>.
+                  </para>
+                </listitem>
+              </varlistentry>
+
               <varlistentry>
                 <term><command>database</command></term>
                 <listitem>
index 5db9b81ac213798dfa5117fbb30feb7f20d11299..b052a50ab5570346980dd4018043d9ee71d7fd0a 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: check.c,v 1.74 2006/03/10 05:00:23 marka Exp $ */
+/* $Id: check.c,v 1.75 2006/06/04 23:17:06 marka Exp $ */
 
 /*! \file */
 
@@ -934,6 +934,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions,
        { "check-srv-cname", MASTERZONE },
        { "masterfile-format", MASTERZONE | SLAVEZONE | STUBZONE | HINTZONE },
        { "update-check-ksk", MASTERZONE },
+       { "try-tcp-refresh", SLAVEZONE },
        };
 
        static optionstable dialups[] = {
index c2a1bf499a1788dfa762b1fd7115d06ed0304f5a..6e98c9996e75037c9f561ef1fd9f24fdb0d09deb 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zone.h,v 1.144 2006/03/06 01:27:52 marka Exp $ */
+/* $Id: zone.h,v 1.145 2006/06/04 23:17:07 marka Exp $ */
 
 #ifndef DNS_ZONE_H
 #define DNS_ZONE_H 1
@@ -66,6 +66,7 @@ typedef enum {
 #define DNS_ZONEOPT_WARNSRVCNAME  0x00200000U  /*%< warn on SRV CNAME check */
 #define DNS_ZONEOPT_IGNORESRVCNAME 0x00400000U /*%< ignore SRV CNAME check */
 #define DNS_ZONEOPT_UPDATECHECKKSK 0x00800000U /*%< check dnskey KSK flag */
+#define DNS_ZONEOPT_TRYTCPREFRESH 0x01000000U  /*%< try tcp refresh on udp failure */
 
 #ifndef NOMINUM_PUBLIC
 /*
index 22b483777aa1c6f4fae70b3f7bad9223b77d3016..6f65db39ed71a799bf60c9473b4e1f1016381c5c 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zone.c,v 1.455 2006/05/18 02:35:26 marka Exp $ */
+/* $Id: zone.c,v 1.456 2006/06/04 23:17:06 marka Exp $ */
 
 /*! \file */
 
@@ -4285,7 +4285,8 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
                                     "master %s exceeded (source %s)",
                                     master, source);
                        /* Try with slave with TCP. */
-                       if (zone->type == dns_zone_slave)
+                       if (zone->type == dns_zone_slave &&
+                           DNS_ZONE_OPTION(zone, DNS_ZONEOPT_TRYTCPREFRESH))
                                goto tcp_transfer;
                } else
                        dns_zone_log(zone, ISC_LOG_INFO,
index cc34ec864c9e8a24add0ae0e7bcbefb6f7ddc669..2c691f5f685d4c7f725cce04ca0f5d183045e4a6 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: namedconf.c,v 1.69 2006/05/03 01:54:54 marka Exp $ */
+/* $Id: namedconf.c,v 1.70 2006/06/04 23:17:07 marka Exp $ */
 
 /*! \file */
 
@@ -846,6 +846,7 @@ zone_clauses[] = {
        { "check-sibling", &cfg_type_boolean, 0 },
        { "zero-no-soa-ttl", &cfg_type_boolean, 0 },
        { "update-check-ksk", &cfg_type_boolean, 0 },
+       { "try-tcp-refresh", &cfg_type_boolean, 0 },
        { NULL, NULL, 0 }
 };