]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
955. [bug] When using views, the zone's class was not being
authorMark Andrews <marka@isc.org>
Tue, 7 Aug 2001 01:58:59 +0000 (01:58 +0000)
committerMark Andrews <marka@isc.org>
Tue, 7 Aug 2001 01:58:59 +0000 (01:58 +0000)
                        inherited from the view's class.  [RT #1583]

CHANGES
bin/named/config.c
bin/named/include/named/config.h
bin/named/lwresd.c
bin/named/server.c
bin/named/zoneconf.c

diff --git a/CHANGES b/CHANGES
index 2f4c6f77b9bfb4b1347870aa031a5f66969fe121..eb61ba9b3009702114fa4a25555f837a1daf6b05 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+ 955.  [bug]           When using views, the zone's class was not being
+                       inherited from the view's class.  [RT #1583]
+
  954.  [bug]           dig, host, nslookup: AXFR / IXFR are inherently
                        non-recursive, do not set RD.  [RT #1575]
 
index 4b8e3d704eaba4ff29cf1fea0ca91239d991828a..24bd1495a69eeaf4689a8daf5d6b5683ab852dda 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: config.c,v 1.10 2001/08/03 18:12:04 bwelling Exp $ */
+/* $Id: config.c,v 1.11 2001/08/07 01:58:54 marka Exp $ */
 
 #include <config.h>
 
@@ -177,12 +177,13 @@ ns_config_listcount(cfg_obj_t *list) {
 }
 
 isc_result_t
-ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t *classp) {
+ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t defclass,
+                  dns_rdataclass_t *classp) {
        char *str;
        isc_textregion_t r;
 
        if (!cfg_obj_isstring(classobj)) {
-               *classp = dns_rdataclass_in;
+               *classp = defclass;
                return (ISC_R_SUCCESS);
        }
        str = cfg_obj_asstring(classobj);
index 8c0f3c3eece62324ba29bfe221cdb65705150c5b..5f841b4281ecd7bc7d3865059f38ec68d191c88e 100644 (file)
@@ -15,9 +15,9 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: config.h,v 1.2 2001/08/03 18:12:08 bwelling Exp $ */
+/* $Id: config.h,v 1.3 2001/08/07 01:58:59 marka Exp $ */
 
-/* $Id: config.h,v 1.2 2001/08/03 18:12:08 bwelling Exp $ */
+/* $Id: config.h,v 1.3 2001/08/07 01:58:59 marka Exp $ */
 
 #ifndef NAMED_CONFIG_H
 #define NAMED_CONFIG_H 1
@@ -37,7 +37,8 @@ int
 ns_config_listcount(cfg_obj_t *list);
 
 isc_result_t
-ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t *classp);
+ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t defclass,
+                  dns_rdataclass_t *classp);
 
 dns_zonetype_t
 ns_config_getzonetype(cfg_obj_t *zonetypeobj);
index 54ae40df1d0d8bee7ac15859129e0ed06cdd36ab..f1057f22d39a505358e39f9ebf9ea76696e215f1 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: lwresd.c,v 1.36 2001/04/02 22:52:07 bwelling Exp $ */
+/* $Id: lwresd.c,v 1.37 2001/08/07 01:58:55 marka Exp $ */
 
 /*
  * Main program for the Lightweight Resolver Daemon.
@@ -323,7 +323,7 @@ ns_lwdmanager_create(isc_mem_t *mctx, cfg_obj_t *lwres,
        if (viewobj != NULL) {
                vname = cfg_obj_asstring(cfg_tuple_get(viewobj, "name"));
                obj = cfg_tuple_get(viewobj, "class");
-               result = ns_config_getclass(obj, &vclass);
+               result = ns_config_getclass(obj, dns_rdataclass_in, &vclass);
                if (result != ISC_R_SUCCESS)
                        goto fail;
        } else {
index fd097d15ab8f189b71f79383d2260e2069b03c9f..ef342ad2f9acdb3cf3f3e35ed5af532daa44424a 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: server.c,v 1.338 2001/08/03 17:58:18 bwelling Exp $ */
+/* $Id: server.c,v 1.339 2001/08/07 01:58:56 marka Exp $ */
 
 #include <config.h>
 
@@ -192,7 +192,8 @@ configure_view_dnsseckey(cfg_obj_t *vconfig, cfg_obj_t *key,
                viewclass = dns_rdataclass_in;
        else {
                cfg_obj_t *classobj = cfg_tuple_get(vconfig, "class");
-               CHECK(ns_config_getclass(classobj, &viewclass));
+               CHECK(ns_config_getclass(classobj, dns_rdataclass_in,
+                                        &viewclass));
        }
        keystruct.common.rdclass = viewclass;
        keystruct.common.rdtype = dns_rdatatype_key;
@@ -1188,7 +1189,8 @@ create_view(cfg_obj_t *vconfig, dns_viewlist_t *viewlist, dns_view_t **viewp) {
 
                viewname = cfg_obj_asstring(cfg_tuple_get(vconfig, "name"));
                classobj = cfg_tuple_get(vconfig, "class");
-               result = ns_config_getclass(classobj, &viewclass);
+               result = ns_config_getclass(classobj, dns_rdataclass_in,
+                                           &viewclass);
        } else {
                viewname = "_default";
                viewclass = dns_rdataclass_in;
@@ -1249,7 +1251,8 @@ configure_zone(cfg_obj_t *config, cfg_obj_t *zconfig, cfg_obj_t *vconfig,
                                &buffer, dns_rootname, ISC_FALSE, NULL));
        origin = dns_fixedname_name(&fixorigin);
 
-       CHECK(ns_config_getclass(cfg_tuple_get(zconfig, "class"), &zclass));
+       CHECK(ns_config_getclass(cfg_tuple_get(zconfig, "class"),
+                                view->rdclass, &zclass));
        if (zclass != view->rdclass) {
                const char *vname = NULL;
                if (vconfig != NULL)
index 0cb737cbdb80c334ab28d1d34671142a687860e3..74cdd90216f408618419966e6376b3e9671619c7 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zoneconf.c,v 1.86 2001/06/04 21:51:26 bwelling Exp $ */
+/* $Id: zoneconf.c,v 1.87 2001/08/07 01:58:58 marka Exp $ */
 
 #include <config.h>
 
@@ -295,6 +295,7 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
        isc_result_t result;
        char *zname;
        dns_rdataclass_t zclass;
+       dns_rdataclass_t vclass;
        cfg_obj_t *maps[5];
        cfg_obj_t *zoptions = NULL;
        cfg_obj_t *options = NULL;
@@ -327,13 +328,21 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
        }
        maps[i++] = ns_g_defaults;
        maps[i++] = NULL;
+
+       if (vconfig != NULL)
+               RETERR(ns_config_getclass(cfg_tuple_get(vconfig, "class"),
+                                         dns_rdataclass_in, &vclass));
+       else
+               vclass = dns_rdataclass_in;
+
        /*
         * Configure values common to all zone types.
         */
 
        zname = cfg_obj_asstring(cfg_tuple_get(zconfig, "name"));
 
-       RETERR(ns_config_getclass(cfg_tuple_get(zconfig, "class"), &zclass));
+       RETERR(ns_config_getclass(cfg_tuple_get(zconfig, "class"),
+                                 vclass, &zclass));
        dns_zone_setclass(zone, zclass);
 
        ztype = zonetype_fromconfig(zoptions);