]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Remove fixed value for the rrset-order option
authorOndřej Surý <ondrej@isc.org>
Fri, 6 Dec 2024 13:13:56 +0000 (14:13 +0100)
committerOndřej Surý <ondrej@isc.org>
Mon, 9 Dec 2024 12:09:26 +0000 (13:09 +0100)
Remove the "fixed" value from the "rrset-order" option and from the
autoconf script.

17 files changed:
bin/named/server.c
bin/tests/system/checkconf/deprecated.conf
bin/tests/system/checkconf/tests.sh
bin/tests/system/dnstap/README
bin/tests/system/rrsetorder/ns1/named.conf.in
bin/tests/system/rrsetorder/ns1/root.db
bin/tests/system/rrsetorder/ns2/named.conf.in
bin/tests/system/rrsetorder/ns3/named.conf.in
bin/tests/system/rrsetorder/tests.sh
configure.ac
doc/arm/reference.rst
lib/dns/include/dns/rdataset.h
lib/dns/masterdump.c
lib/dns/rdataslab.c
lib/dns/rriterator.c
lib/isccfg/check.c
lib/ns/query.c

index 99f73f0052e07741ceb12b9c2300f34f4df9b825..b2a95f1b8521eab8a766379daa4af7d2f4f9acac 100644 (file)
@@ -1396,13 +1396,7 @@ configure_order(dns_order_t *order, const cfg_obj_t *ent) {
        obj = cfg_tuple_get(ent, "ordering");
        INSIST(cfg_obj_isstring(obj));
        str = cfg_obj_asstring(obj);
-       if (!strcasecmp(str, "fixed")) {
-#if DNS_RDATASET_FIXED
-               mode = DNS_RDATASETATTR_FIXEDORDER;
-#else  /* if DNS_RDATASET_FIXED */
-               mode = DNS_RDATASETATTR_CYCLIC;
-#endif /* DNS_RDATASET_FIXED */
-       } else if (!strcasecmp(str, "random")) {
+       if (!strcasecmp(str, "random")) {
                mode = DNS_RDATASETATTR_RANDOMIZE;
        } else if (!strcasecmp(str, "cyclic")) {
                mode = DNS_RDATASETATTR_CYCLIC;
index fad10192c8548c51d4184b7c9c96223120da4f14..85e14ee43f421bbcd4d08e3e6c1d6b0d16b747aa 100644 (file)
@@ -18,10 +18,6 @@ options {
        dnssec-must-be-secure mustbesecure.example yes;
 
        sortlist { };
-
-       rrset-order {
-               name "fixed.example" order fixed;
-       };
 };
 
 trusted-keys {
index 461e4ef45146055a04599c54764e7d4f8d61e8cd..61e59ddaa1e263d173fd6cdbc0e36b2b379423d3 100644 (file)
@@ -179,12 +179,6 @@ warnings=$(grep "'notify' is disabled" <checkconf.out$n | wc -l)
 if [ $ret -ne 0 ]; then echo_i "failed"; fi
 status=$((status + ret))
 
-if grep "^#define DNS_RDATASET_FIXED" "$TOP_BUILDDIR/config.h" >/dev/null 2>&1; then
-  test_fixed=true
-else
-  test_fixed=false
-fi
-
 n=$((n + 1))
 echo_i "checking named-checkconf deprecate warnings ($n)"
 ret=0
@@ -194,11 +188,6 @@ grep "option 'trusted-keys' is deprecated" <checkconf.out$n.1 >/dev/null || ret=
 grep "option 'max-zone-ttl' is deprecated" <checkconf.out$n.1 >/dev/null || ret=1
 grep "option 'dnssec-must-be-secure' is deprecated" <checkconf.out$n.1 >/dev/null || ret=1
 grep "option 'sortlist' is deprecated" <checkconf.out$n.1 >/dev/null || ret=1
-if $test_fixed; then
-  grep "rrset-order: order 'fixed' is deprecated" <checkconf.out$n.1 >/dev/null || ret=1
-else
-  grep "rrset-order: order 'fixed' was disabled at compilation time" <checkconf.out$n.1 >/dev/null || ret=1
-fi
 if [ $ret -ne 0 ]; then echo_i "failed"; fi
 status=$((status + ret))
 # set -i to ignore deprecate warnings
index 856fe482f3f946b76e4b001abbf382db6b074748..f6786802e8ad614c08821c0f26c5d4e85057f10a 100644 (file)
@@ -10,11 +10,9 @@ See the COPYRIGHT file distributed with this work for additional
 information regarding copyright ownership.
 
 The "large-answer.fstrm" file was generated by configuring a named instance
-compiled with --enable-dnstap and --enable-fixed-rrset with the following
-directives:
+compiled with --enable-dnstap with the following directives:
 
     minimal-responses yes;
-    rrset-order { order fixed; };
     dnstap { auth response; };
     dnstap-identity none;
     dnstap-output file "large-answer.fstrm";
index 2f1850d1d7f2269e724056dd7f5db441ace97e5c..213a006545bd734a2039b29dd5774752b3c5254f 100644 (file)
@@ -24,7 +24,6 @@ options {
        dnssec-validation no;
        notify no;
        rrset-order {
-               name "fixed.example" order fixed;
                name "random.example" order random;
                name "cyclic.example" order cyclic;
                name "none.example" order none;
index 094eec7eb6b39ce4182de05abcb4277237af0151..a56764cffc391b4efdd841f2a6140a32d80dad6c 100644 (file)
@@ -20,11 +20,6 @@ $TTL 3600
 .                       NS      cyclic.example.
 a.root-servers.nil.    A       10.53.0.1
 ;
-fixed.example.         A       1.2.3.4
-fixed.example.         A       1.2.3.3
-fixed.example.         A       1.2.3.1
-fixed.example.         A       1.2.3.2
-;
 random.example.                A       1.2.3.1
 random.example.                A       1.2.3.2
 random.example.                A       1.2.3.3
index 164400ac5214a9ce48fda9a353b1cd0e27ea6766..94fa9501297df1870178476f9ed38f82a8d0d897 100644 (file)
@@ -23,7 +23,6 @@ options {
        dnssec-validation no;
        notify yes;
        rrset-order {
-               name "fixed.example" order fixed;
                name "random.example" order random;
                name "cyclic.example" order cyclic;
                name "none.example" order none;
index cdab83ed24baade951eff8ab95c1ab2a8d47299e..5d29fae77b955c1cd4385ca9319e7dab7d7268e2 100644 (file)
@@ -23,7 +23,6 @@ options {
        dnssec-validation yes;
        notify yes;
        rrset-order {
-               name "fixed.example" order fixed;
                name "random.example" order random;
                name "cyclic.example" order cyclic;
                name "none.example" order none;
index 844fefe8b7f0920a63107adfd96adda1473b93da..0358601d1d3f39443d921e1fcdb7f3f7665ca0c7 100644 (file)
@@ -27,49 +27,6 @@ status=0
 GOOD_RANDOM="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24"
 GOOD_RANDOM_NO=24
 
-if grep "^#define DNS_RDATASET_FIXED" "$TOP_BUILDDIR/config.h" >/dev/null 2>&1; then
-  test_fixed=true
-else
-  echo_i "Order 'fixed' disabled at compile time"
-  test_fixed=false
-fi
-
-#
-#
-#
-if $test_fixed; then
-  echo_i "Checking order fixed (primary)"
-  ret=0
-  for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
-    dig_cmd @10.53.0.1 fixed.example >dig.out.fixed || ret=1
-    diff dig.out.fixed reference.dig.out.fixed.good >/dev/null || ret=1
-  done
-  if [ $ret != 0 ]; then echo_i "failed"; fi
-  status=$((status + ret))
-else
-  echo_i "Checking order fixed behaves as cyclic when disabled (primary)"
-  ret=0
-  matches=0
-  for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
-    j=$((i % 4))
-    dig_cmd @10.53.0.1 fixed.example >dig.out.fixed || ret=1
-    if [ $i -le 4 ]; then
-      cp dig.out.fixed dig.out.$j
-    else
-      diff dig.out.fixed dig.out.$j >/dev/null && matches=$((matches + 1))
-    fi
-  done
-  diff dig.out.0 dig.out.1 >/dev/null && ret=1
-  diff dig.out.0 dig.out.2 >/dev/null && ret=1
-  diff dig.out.0 dig.out.3 >/dev/null && ret=1
-  diff dig.out.1 dig.out.2 >/dev/null && ret=1
-  diff dig.out.1 dig.out.3 >/dev/null && ret=1
-  diff dig.out.2 dig.out.3 >/dev/null && ret=1
-  if [ $matches -ne 16 ]; then ret=1; fi
-  if [ $ret != 0 ]; then echo_i "failed"; fi
-  status=$((status + ret))
-fi
-
 #
 #
 #
@@ -157,20 +114,6 @@ done
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status + ret))
 
-#
-#
-#
-if $test_fixed; then
-  echo_i "Checking order fixed (secondary)"
-  ret=0
-  for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
-    dig_cmd @10.53.0.2 fixed.example >dig.out.fixed || ret=1
-    diff dig.out.fixed reference.dig.out.fixed.good || ret=1
-  done
-  if [ $ret != 0 ]; then echo_i "failed"; fi
-  status=$((status + ret))
-fi
-
 #
 #
 #
@@ -274,20 +217,6 @@ echo_i "Re-starting secondary"
 
 start_server --noclean --restart --port ${PORT} ns2
 
-#
-#
-#
-if $test_fixed; then
-  echo_i "Checking order fixed (secondary loaded from disk)"
-  ret=0
-  for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
-    dig_cmd @10.53.0.2 fixed.example >dig.out.fixed || ret=1
-    diff dig.out.fixed reference.dig.out.fixed.good || ret=1
-  done
-  if [ $ret != 0 ]; then echo_i "failed"; fi
-  status=$((status + ret))
-fi
-
 #
 #
 #
@@ -376,20 +305,6 @@ done
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status + ret))
 
-#
-#
-#
-if $test_fixed; then
-  echo_i "Checking order fixed (cache)"
-  ret=0
-  for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
-    dig_cmd @10.53.0.3 fixed.example >dig.out.fixed || ret=1
-    diff dig.out.fixed reference.dig.out.fixed.good || ret=1
-  done
-  if [ $ret != 0 ]; then echo_i "failed"; fi
-  status=$((status + ret))
-fi
-
 #
 #
 #
index b1e9c7838e04aa722c87985e8a5ce5c0d1748ce4..caad12ef021740e85bdba3e4c693323e434dfdde 100644 (file)
@@ -172,7 +172,6 @@ AC_ARG_ENABLE([developer],
 AS_IF([test "$enable_developer" = "yes"],
       [DEVELOPER_MODE=yes
        STD_CPPFLAGS="$STD_CPPFLAGS -DISC_MEM_DEFAULTFILL=1 -DISC_MEM_TRACKLINES=1 -DISC_LIST_CHECKINIT=1 -DISC_STATS_CHECKUNDERFLOW=1 -DISC_MUTEX_ERROR_CHECK=1"
-       test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
        test "${enable_querytrace+set}" = set || enable_querytrace=yes
        test "${with_cmocka+set}" = set || with_cmocka=yes
        test "${with_zlib+set}" = set || with_zlib=yes
@@ -1102,18 +1101,6 @@ AC_LINK_IFELSE(
   [AC_MSG_RESULT([no])
   ])
 
-#
-# Activate "rrset-order fixed" or not?
-#
-# [pairwise: --enable-fixed-rrset, --disable-fixed-rrset]
-AC_ARG_ENABLE([fixed-rrset],
-             [AS_HELP_STRING([--enable-fixed-rrset],
-                             [enable fixed rrset ordering [default=no]])],
-             [], [enable_fixed_rrset="no"])
-AS_IF([test "$enable_fixed_rrset" = "yes"],
-      [AC_MSG_WARN([fixed rrset ordering is deprecated and will be removed in the future release])
-       AC_DEFINE([DNS_RDATASET_FIXED], [1], [Define to enable "rrset-order fixed" syntax.])])
-
 #
 # Activate dnstap?
 #
@@ -1530,8 +1517,6 @@ report() {
        test -z "$LIBIDN2_LIBS" || echo "    IDN support (--with-libidn2)"
     fi
 
-    test "yes" = "$enable_fixed_rrset" && \
-       echo "    Allow 'fixed' rrset-order (--enable-fixed-rrset)"
     test "yes" = "$enable_fips_mode" && \
        echo "    FIPS mode in OpenSSL (--enable-fips-mode)"
 
@@ -1575,9 +1560,6 @@ report() {
     test -z "$MAXMINDDB_LIBS" && echo "    GeoIP2 access control (--enable-geoip)"
     test -z "$GSSAPI_LIBS" && echo "    GSS-API (--with-gssapi)"
 
-    test "yes" = "$enable_fixed_rrset" || \
-       echo "    Allow 'fixed' rrset-order (--enable-fixed-rrset)"
-
     test "yes" = "$validation_default" && echo "    DNSSEC validation requires configuration (--enable-auto-validation)"
 
     test "yes" = "$enable_fips_mode" || \
index 17f9739dc3b80568d45f66f8254d8d89870561ef..529b2e76943d5c2c070b51aa3f57be5cb9c8a716 100644 (file)
@@ -4100,16 +4100,6 @@ RRset Ordering
 
    The legal values for ``<ordering>`` are:
 
-   ``fixed``
-       Records are returned in the order they are defined in the zone file.
-
-       This value is deprecated and will be removed in a future release.
-
-   .. note::
-
-       The ``fixed`` option is only available if BIND is configured with
-       ``--enable-fixed-rrset`` at compile time.
-
    ``random``
        Records are returned in a random order.
 
@@ -4148,7 +4138,6 @@ RRset Ordering
        rrset-order {
            type A name "foo.isc.org" order random;
            type AAAA name "foo.isc.org" order cyclic;
-           name "bar.isc.org" order fixed;
            name "*.bar.isc.org" order random;
            name "*.baz.isc.org" order cyclic;
        };
@@ -4162,7 +4151,6 @@ RRset Ordering
    ``foo.isc.org``        ``AAAA``    ``cyclic``
    ``foo.isc.org``        ``TXT``     ``none``
    ``sub.foo.isc.org``    all         ``none``
-   ``bar.isc.org``        all         ``fixed``
    ``sub.bar.isc.org``    all         ``random``
    ``baz.isc.org``        all         ``none``
    ``sub.baz.isc.org``    all         ``cyclic``
index cb0a8d327b81feb266551f5f056ac99409e9b3ca..9651327bdeb88e66eced5fce9e7cecc97bcba6bc 100644 (file)
@@ -253,7 +253,7 @@ struct dns_rdataset {
 #define DNS_RDATASETATTR_CHECKNAMES   0x00008000 /*%< Used by resolver. */
 #define DNS_RDATASETATTR_REQUIRED     0x00010000
 #define DNS_RDATASETATTR_REQUIREDGLUE DNS_RDATASETATTR_REQUIRED
-#define DNS_RDATASETATTR_LOADORDER    0x00020000
+#define DNS_RDATASETATTR_UNUSED1      0x00020000
 #define DNS_RDATASETATTR_RESIGN              0x00040000
 #define DNS_RDATASETATTR_CLOSEST      0x00080000
 #define DNS_RDATASETATTR_OPTOUT              0x00100000 /*%< OPTOUT proof */
index adbdd862d28e1457d5ce260d9998bdbdc6b81320..db5c1a0febb4453f3189681634d795999ca25c59 100644 (file)
@@ -599,7 +599,6 @@ rdataset_totext(dns_rdataset_t *rdataset, const dns_name_t *owner_name,
 
        REQUIRE(DNS_RDATASET_VALID(rdataset));
 
-       rdataset->attributes |= DNS_RDATASETATTR_LOADORDER;
        result = dns_rdataset_first(rdataset);
 
        current_ttl = ctx->current_ttl;
@@ -1229,7 +1228,6 @@ dump_rdataset_raw(isc_mem_t *mctx, const dns_name_t *name,
        REQUIRE(buffer->length > 0);
        REQUIRE(DNS_RDATASET_VALID(rdataset));
 
-       rdataset->attributes |= DNS_RDATASETATTR_LOADORDER;
 restart:
        totallen = 0;
        result = dns_rdataset_first(rdataset);
index 3da416e2efc7967a490318d2e69608e571331909..c5e0ffbf9143a2616e7b1c8eb37ee9a073521d86 100644 (file)
  *             meta data       (1 byte for RRSIG's)
  *             data            (data length bytes)
  *
- * If DNS_RDATASET_FIXED is defined to be zero (0) the format of a
- * rdataslab is as follows:
- *
- *     header          (reservelen bytes)
- *     record count    (2 bytes)
- *     data records
- *             data length     (2 bytes)
- *             meta data       (1 byte for RRSIG's)
- *             data            (data length bytes)
- *
- * Offsets are from the end of the header.
- *
- * Load order traversal is performed by walking the offset table to find
- * the start of the record (DNS_RDATASET_FIXED = 1).
- *
  * DNSSEC order traversal is performed by walking the data records.
  *
  * The order is stored with record to allow for efficient reconstruction
  *     the changes.  See the areas tagged with "RDATASLAB".
  */
 
-struct xrdata {
-       dns_rdata_t rdata;
-#if DNS_RDATASET_FIXED
-       unsigned int order;
-#endif /* if DNS_RDATASET_FIXED */
-};
-
 #define peek_uint16(buffer) ({ ((uint16_t)*(buffer) << 8) | *((buffer) + 1); })
 #define get_uint16(buffer)                            \
        ({                                            \
@@ -129,41 +107,8 @@ rdataset_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name);
 /*% Note: the "const void *" are just to make qsort happy.  */
 static int
 compare_rdata(const void *p1, const void *p2) {
-       const struct xrdata *x1 = p1;
-       const struct xrdata *x2 = p2;
-       return dns_rdata_compare(&x1->rdata, &x2->rdata);
-}
-
-#if DNS_RDATASET_FIXED
-static void
-fillin_offsets(unsigned char *offsetbase, unsigned int *offsettable,
-              unsigned int length) {
-       unsigned int i, j;
-       unsigned char *raw = NULL;
-
-       for (i = 0, j = 0; i < length; i++) {
-               if (offsettable[i] == 0) {
-                       continue;
-               }
-
-               /*
-                * Fill in offset table.
-                */
-               raw = &offsetbase[j * 4 + 2];
-               *raw++ = (offsettable[i] & 0xff000000) >> 24;
-               *raw++ = (offsettable[i] & 0xff0000) >> 16;
-               *raw++ = (offsettable[i] & 0xff00) >> 8;
-               *raw = offsettable[i] & 0xff;
-
-               /*
-                * Fill in table index.
-                */
-               raw = offsetbase + offsettable[i] + 2;
-               *raw++ = (j & 0xff00) >> 8;
-               *raw = j++ & 0xff;
-       }
+       return dns_rdata_compare(p1, p2);
 }
-#endif /* if DNS_RDATASET_FIXED */
 
 isc_result_t
 dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
@@ -174,7 +119,7 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
         * rdata as rdata.data == NULL is valid.
         */
        static unsigned char removed;
-       struct xrdata *x = NULL;
+       dns_rdata_t *rdata = NULL;
        unsigned char *rawbuf = NULL;
        unsigned int buflen;
        isc_result_t result;
@@ -182,10 +127,6 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
        unsigned int nalloc;
        unsigned int length;
        unsigned int i;
-#if DNS_RDATASET_FIXED
-       unsigned char *offsetbase = NULL;
-       unsigned int *offsettable = NULL;
-#endif /* if DNS_RDATASET_FIXED */
 
        buflen = reservelen + 2;
 
@@ -220,7 +161,7 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
         * Remember the original number of items.
         */
        nalloc = nitems;
-       x = isc_mem_cget(mctx, nalloc, sizeof(struct xrdata));
+       rdata = isc_mem_cget(mctx, nalloc, sizeof(rdata[0]));
 
        /*
         * Save all of the rdata members into an array.
@@ -231,12 +172,9 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
        }
        for (i = 0; i < nalloc && result == ISC_R_SUCCESS; i++) {
                INSIST(result == ISC_R_SUCCESS);
-               dns_rdata_init(&x[i].rdata);
-               dns_rdataset_current(rdataset, &x[i].rdata);
-               INSIST(x[i].rdata.data != &removed);
-#if DNS_RDATASET_FIXED
-               x[i].order = i;
-#endif /* if DNS_RDATASET_FIXED */
+               dns_rdata_init(&rdata[i]);
+               dns_rdataset_current(rdataset, &rdata[i]);
+               INSIST(rdata[i].data != &removed);
                result = dns_rdataset_next(rdataset);
        }
        if (i != nalloc || result != ISC_R_NOMORE) {
@@ -254,7 +192,7 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
         * Put into DNSSEC order.
         */
        if (nalloc > 1U) {
-               qsort(x, nalloc, sizeof(struct xrdata), compare_rdata);
+               qsort(rdata, nalloc, sizeof(rdata[0]), compare_rdata);
        }
 
        /*
@@ -267,24 +205,11 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
         * and then the rdata itself.
         */
        for (i = 1; i < nalloc; i++) {
-               if (compare_rdata(&x[i - 1].rdata, &x[i].rdata) == 0) {
-                       x[i - 1].rdata.data = &removed;
-#if DNS_RDATASET_FIXED
-                       /*
-                        * Preserve the least order so A, B, A -> A, B
-                        * after duplicate removal.
-                        */
-                       if (x[i - 1].order < x[i].order) {
-                               x[i].order = x[i - 1].order;
-                       }
-#endif /* if DNS_RDATASET_FIXED */
+               if (compare_rdata(&rdata[i - 1], &rdata[i]) == 0) {
+                       rdata[i - 1].data = &removed;
                        nitems--;
                } else {
-#if DNS_RDATASET_FIXED
-                       buflen += (8 + x[i - 1].rdata.length);
-#else  /* if DNS_RDATASET_FIXED */
-                       buflen += (2 + x[i - 1].rdata.length);
-#endif /* if DNS_RDATASET_FIXED */
+                       buflen += (2 + rdata[i - 1].length);
                        /*
                         * Provide space to store the per RR meta data.
                         */
@@ -297,11 +222,7 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
        /*
         * Don't forget the last item!
         */
-#if DNS_RDATASET_FIXED
-       buflen += (8 + x[i - 1].rdata.length);
-#else  /* if DNS_RDATASET_FIXED */
-       buflen += (2 + x[i - 1].rdata.length);
-#endif /* if DNS_RDATASET_FIXED */
+       buflen += (2 + rdata[i - 1].length);
        /*
         * Provide space to store the per RR meta data.
         */
@@ -327,68 +248,43 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
         */
        rawbuf = isc_mem_cget(mctx, 1, buflen);
 
-#if DNS_RDATASET_FIXED
-       /* Allocate temporary offset table. */
-       offsettable = isc_mem_cget(mctx, nalloc, sizeof(unsigned int));
-#endif /* if DNS_RDATASET_FIXED */
-
        region->base = rawbuf;
        region->length = buflen;
 
        rawbuf += reservelen;
 
-#if DNS_RDATASET_FIXED
-       offsetbase = rawbuf;
-#endif /* if DNS_RDATASET_FIXED */
-
        *rawbuf++ = (nitems & 0xff00) >> 8;
        *rawbuf++ = (nitems & 0x00ff);
 
-#if DNS_RDATASET_FIXED
-       /* Skip load order table.  Filled in later. */
-       rawbuf += nitems * 4;
-#endif /* if DNS_RDATASET_FIXED */
-
        for (i = 0; i < nalloc; i++) {
-               if (x[i].rdata.data == &removed) {
+               if (rdata[i].data == &removed) {
                        continue;
                }
-#if DNS_RDATASET_FIXED
-               offsettable[x[i].order] = rawbuf - offsetbase;
-#endif /* if DNS_RDATASET_FIXED */
-               length = x[i].rdata.length;
+               length = rdata[i].length;
                if (rdataset->type == dns_rdatatype_rrsig) {
                        length++;
                }
                INSIST(length <= 0xffff);
                *rawbuf++ = (length & 0xff00) >> 8;
                *rawbuf++ = (length & 0x00ff);
-#if DNS_RDATASET_FIXED
-               rawbuf += 2; /* filled in later */
-#endif                      /* if DNS_RDATASET_FIXED */
                /*
                 * Store the per RR meta data.
                 */
                if (rdataset->type == dns_rdatatype_rrsig) {
-                       *rawbuf++ = (x[i].rdata.flags & DNS_RDATA_OFFLINE)
+                       *rawbuf++ = (rdata[i].flags & DNS_RDATA_OFFLINE)
                                            ? DNS_RDATASLAB_OFFLINE
                                            : 0;
                }
-               if (x[i].rdata.length != 0) {
-                       memmove(rawbuf, x[i].rdata.data, x[i].rdata.length);
+               if (rdata[i].length != 0) {
+                       memmove(rawbuf, rdata[i].data, rdata[i].length);
                }
-               rawbuf += x[i].rdata.length;
+               rawbuf += rdata[i].length;
        }
 
-#if DNS_RDATASET_FIXED
-       fillin_offsets(offsetbase, offsettable, nalloc);
-       isc_mem_cput(mctx, offsettable, nalloc, sizeof(unsigned int));
-#endif /* if DNS_RDATASET_FIXED */
-
        result = ISC_R_SUCCESS;
 
 free_rdatas:
-       isc_mem_cput(mctx, x, nalloc, sizeof(struct xrdata));
+       isc_mem_cput(mctx, rdata, nalloc, sizeof(rdata[0]));
        return result;
 }
 
@@ -399,16 +295,9 @@ dns_rdataslab_size(unsigned char *slab, unsigned int reservelen) {
        unsigned char *current = slab + reservelen;
        uint16_t count = get_uint16(current);
 
-#if DNS_RDATASET_FIXED
-       current += (4 * count);
-#endif /* if DNS_RDATASET_FIXED */
-
        while (count-- > 0) {
                uint16_t length = get_uint16(current);
                current += length;
-#if DNS_RDATASET_FIXED
-               current += 2;
-#endif /* if DNS_RDATASET_FIXED */
        }
 
        return (unsigned int)(current - slab);
@@ -422,17 +311,10 @@ dns_rdataslab_rdatasize(unsigned char *slab, unsigned int reservelen) {
        unsigned char *current = slab + reservelen;
        uint16_t count = get_uint16(current);
 
-#if DNS_RDATASET_FIXED
-       current += (4 * count);
-#endif /* if DNS_RDATASET_FIXED */
-
        while (count-- > 0) {
                uint16_t length = get_uint16(current);
                rdatalen += length;
                current += length;
-#if DNS_RDATASET_FIXED
-               current += 2;
-#endif /* if DNS_RDATASET_FIXED */
        }
 
        return rdatalen;
@@ -470,9 +352,6 @@ rdata_from_slab(unsigned char **current, dns_rdataclass_t rdclass,
                tcurrent++;
        }
        region.length = length;
-#if DNS_RDATASET_FIXED
-       tcurrent += 2;
-#endif /* if DNS_RDATASET_FIXED */
        region.base = tcurrent;
        tcurrent += region.length;
        dns_rdata_fromregion(rdata, rdclass, type, &region);
@@ -495,10 +374,6 @@ rdata_in_slab(unsigned char *slab, unsigned int reservelen,
 
        uint16_t count = get_uint16(current);
 
-#if DNS_RDATASET_FIXED
-       current += (4 * count);
-#endif /* if DNS_RDATASET_FIXED */
-
        for (size_t i = 0; i < count; i++) {
                dns_rdata_t trdata = DNS_RDATA_INIT;
                rdata_from_slab(&current, rdclass, type, &trdata);
@@ -530,13 +405,6 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
        unsigned int oadded = 0;
        unsigned int nadded = 0;
        unsigned int nncount = 0;
-#if DNS_RDATASET_FIXED
-       unsigned int oncount;
-       unsigned int norder = 0;
-       unsigned int oorder = 0;
-       unsigned char *offsetbase = NULL;
-       unsigned int *offsettable = NULL;
-#endif /* if DNS_RDATASET_FIXED */
 
        /*
         * XXX  Need parameter to allow "delete rdatasets in nslab" merge,
@@ -548,25 +416,15 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
 
        ocurrent = oslab + reservelen;
        ocount = get_uint16(ocurrent);
-#if DNS_RDATASET_FIXED
-       ocurrent += (4 * ocount);
-#endif /* if DNS_RDATASET_FIXED */
        ostart = ocurrent;
        ncurrent = nslab + reservelen;
        ncount = get_uint16(ncurrent);
-#if DNS_RDATASET_FIXED
-       ncurrent += (4 * ncount);
-#endif /* if DNS_RDATASET_FIXED */
        INSIST(ocount > 0 && ncount > 0);
 
        if (maxrrperset > 0 && ocount + ncount > maxrrperset) {
                return DNS_R_TOOMANYRECORDS;
        }
 
-#if DNS_RDATASET_FIXED
-       oncount = ncount;
-#endif /* if DNS_RDATASET_FIXED */
-
        /*
         * Yes, this is inefficient!
         */
@@ -577,13 +435,8 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
        olength = 0;
        for (count = 0; count < ocount; count++) {
                length = get_uint16(ocurrent);
-#if DNS_RDATASET_FIXED
-               olength += length + 8;
-               ocurrent += length + 2;
-#else  /* if DNS_RDATASET_FIXED */
                olength += length + 2;
                ocurrent += length;
-#endif /* if DNS_RDATASET_FIXED */
        }
 
        /*
@@ -603,11 +456,7 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
                        /*
                         * This rdata isn't in the old slab.
                         */
-#if DNS_RDATASET_FIXED
-                       tlength += nrdata.length + 8;
-#else  /* if DNS_RDATASET_FIXED */
                        tlength += nrdata.length + 2;
-#endif /* if DNS_RDATASET_FIXED */
                        if (type == dns_rdatatype_rrsig) {
                                tlength++;
                        }
@@ -649,9 +498,6 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
        tstart = isc_mem_get(mctx, tlength);
        memmove(tstart, nslab, reservelen);
        tcurrent = tstart + reservelen;
-#if DNS_RDATASET_FIXED
-       offsetbase = tcurrent;
-#endif /* if DNS_RDATASET_FIXED */
 
        /*
         * Write the new count.
@@ -659,40 +505,18 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
        *tcurrent++ = (tcount & 0xff00) >> 8;
        *tcurrent++ = (tcount & 0x00ff);
 
-#if DNS_RDATASET_FIXED
-       /*
-        * Skip offset table.
-        */
-       tcurrent += (tcount * 4);
-
-       offsettable = isc_mem_cget(mctx, (ocount + oncount),
-                                  sizeof(unsigned int));
-#endif /* if DNS_RDATASET_FIXED */
-
        /*
         * Merge the two slabs.
         */
        ocurrent = ostart;
        INSIST(ocount != 0);
-#if DNS_RDATASET_FIXED
-       oorder = peek_uint16(&ocurrent[2]);
-       INSIST(oorder < ocount);
-#endif /* if DNS_RDATASET_FIXED */
        rdata_from_slab(&ocurrent, rdclass, type, &ordata);
 
        ncurrent = nslab + reservelen + 2;
-#if DNS_RDATASET_FIXED
-       ncurrent += (4 * oncount);
-#endif /* if DNS_RDATASET_FIXED */
 
        if (ncount > 0) {
                do {
                        dns_rdata_reset(&nrdata);
-#if DNS_RDATASET_FIXED
-                       norder = peek_uint16(&ncurrent[2]);
-
-                       INSIST(norder < oncount);
-#endif /* if DNS_RDATASET_FIXED */
                        rdata_from_slab(&ncurrent, rdclass, type, &nrdata);
                } while (rdata_in_slab(oslab, reservelen, rdclass, type,
                                       &nrdata));
@@ -708,9 +532,6 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
                        fromold = (dns_rdata_compare(&ordata, &nrdata) < 0);
                }
                if (fromold) {
-#if DNS_RDATASET_FIXED
-                       offsettable[oorder] = tcurrent - offsetbase;
-#endif /* if DNS_RDATASET_FIXED */
                        length = ordata.length;
                        data = ordata.data;
                        if (type == dns_rdatatype_rrsig) {
@@ -719,25 +540,15 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
                        }
                        *tcurrent++ = (length & 0xff00) >> 8;
                        *tcurrent++ = (length & 0x00ff);
-#if DNS_RDATASET_FIXED
-                       tcurrent += 2; /* fill in later */
-#endif                                /* if DNS_RDATASET_FIXED */
                        memmove(tcurrent, data, length);
                        tcurrent += length;
                        oadded++;
                        if (oadded < ocount) {
                                dns_rdata_reset(&ordata);
-#if DNS_RDATASET_FIXED
-                               oorder = peek_uint16(&ocurrent[2]);
-                               INSIST(oorder < ocount);
-#endif /* if DNS_RDATASET_FIXED */
                                rdata_from_slab(&ocurrent, rdclass, type,
                                                &ordata);
                        }
                } else {
-#if DNS_RDATASET_FIXED
-                       offsettable[ocount + norder] = tcurrent - offsetbase;
-#endif /* if DNS_RDATASET_FIXED */
                        length = nrdata.length;
                        data = nrdata.data;
                        if (type == dns_rdatatype_rrsig) {
@@ -746,19 +557,12 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
                        }
                        *tcurrent++ = (length & 0xff00) >> 8;
                        *tcurrent++ = (length & 0x00ff);
-#if DNS_RDATASET_FIXED
-                       tcurrent += 2; /* fill in later */
-#endif                                /* if DNS_RDATASET_FIXED */
                        memmove(tcurrent, data, length);
                        tcurrent += length;
                        nadded++;
                        if (nadded < ncount) {
                                do {
                                        dns_rdata_reset(&nrdata);
-#if DNS_RDATASET_FIXED
-                                       norder = peek_uint16(&ncurrent[2]);
-                                       INSIST(norder < oncount);
-#endif /* if DNS_RDATASET_FIXED */
                                        rdata_from_slab(&ncurrent, rdclass,
                                                        type, &nrdata);
                                } while (rdata_in_slab(oslab, reservelen,
@@ -767,13 +571,6 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
                }
        }
 
-#if DNS_RDATASET_FIXED
-       fillin_offsets(offsetbase, offsettable, ocount + oncount);
-
-       isc_mem_cput(mctx, offsettable, (ocount + oncount),
-                    sizeof(unsigned int));
-#endif /* if DNS_RDATASET_FIXED */
-
        INSIST(tcurrent == tstart + tlength);
 
        *tslabp = tstart;
@@ -791,11 +588,6 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab,
        unsigned int mcount, scount, rcount, count, tlength, tcount, i;
        dns_rdata_t srdata = DNS_RDATA_INIT;
        dns_rdata_t mrdata = DNS_RDATA_INIT;
-#if DNS_RDATASET_FIXED
-       unsigned char *offsetbase = NULL;
-       unsigned int *offsettable = NULL;
-       unsigned int order;
-#endif /* if DNS_RDATASET_FIXED */
 
        REQUIRE(tslabp != NULL && *tslabp == NULL);
        REQUIRE(mslab != NULL && sslab != NULL);
@@ -817,10 +609,6 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab,
        tcount = 0;
        rcount = 0;
 
-#if DNS_RDATASET_FIXED
-       mcurrent += 4 * mcount;
-       scurrent += 4 * scount;
-#endif /* if DNS_RDATASET_FIXED */
        sstart = scurrent;
 
        /*
@@ -851,10 +639,6 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab,
                dns_rdata_reset(&mrdata);
        }
 
-#if DNS_RDATASET_FIXED
-       tlength += (4 * tcount);
-#endif /* if DNS_RDATASET_FIXED */
-
        /*
         * Check that all the records originally existed.  The numeric
         * check only works as rdataslabs do not contain duplicates.
@@ -883,11 +667,6 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab,
        tstart = isc_mem_get(mctx, tlength);
        memmove(tstart, mslab, reservelen);
        tcurrent = tstart + reservelen;
-#if DNS_RDATASET_FIXED
-       offsetbase = tcurrent;
-
-       offsettable = isc_mem_cget(mctx, mcount, sizeof(unsigned int));
-#endif /* if DNS_RDATASET_FIXED */
 
        /*
         * Write the new count.
@@ -895,24 +674,13 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab,
        *tcurrent++ = (tcount & 0xff00) >> 8;
        *tcurrent++ = (tcount & 0x00ff);
 
-#if DNS_RDATASET_FIXED
-       tcurrent += (4 * tcount);
-#endif /* if DNS_RDATASET_FIXED */
-
        /*
         * Copy the parts of mslab not in sslab.
         */
        mcurrent = mslab + reservelen;
        mcount = get_uint16(mcurrent);
-#if DNS_RDATASET_FIXED
-       mcurrent += (4 * mcount);
-#endif /* if DNS_RDATASET_FIXED */
        for (i = 0; i < mcount; i++) {
                unsigned char *mrdatabegin = mcurrent;
-#if DNS_RDATASET_FIXED
-               order = peek_uint16(&mcurrent[2]);
-               INSIST(order < mcount);
-#endif /* if DNS_RDATASET_FIXED */
                rdata_from_slab(&mcurrent, rdclass, type, &mrdata);
                scurrent = sstart;
                for (count = 0; count < scount; count++) {
@@ -929,21 +697,12 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab,
                         */
                        unsigned int length;
                        length = (unsigned int)(mcurrent - mrdatabegin);
-#if DNS_RDATASET_FIXED
-                       offsettable[order] = tcurrent - offsetbase;
-#endif /* if DNS_RDATASET_FIXED */
                        memmove(tcurrent, mrdatabegin, length);
                        tcurrent += length;
                }
                dns_rdata_reset(&mrdata);
        }
 
-#if DNS_RDATASET_FIXED
-       fillin_offsets(offsetbase, offsettable, mcount);
-
-       isc_mem_cput(mctx, offsettable, mcount, sizeof(unsigned int));
-#endif /* if DNS_RDATASET_FIXED */
-
        INSIST(tcurrent == tstart + tlength);
 
        *tslabp = tstart;
@@ -968,20 +727,10 @@ dns_rdataslab_equal(unsigned char *slab1, unsigned char *slab2,
                return false;
        }
 
-#if DNS_RDATASET_FIXED
-       current1 += (4 * count1);
-       current2 += (4 * count2);
-#endif /* if DNS_RDATASET_FIXED */
-
        while (count1-- > 0) {
                length1 = get_uint16(current1);
                length2 = get_uint16(current2);
 
-#if DNS_RDATASET_FIXED
-               current1 += 2;
-               current2 += 2;
-#endif /* if DNS_RDATASET_FIXED */
-
                if (length1 != length2 ||
                    memcmp(current1, current2, length1) != 0)
                {
@@ -1013,11 +762,6 @@ dns_rdataslab_equalx(unsigned char *slab1, unsigned char *slab2,
                return false;
        }
 
-#if DNS_RDATASET_FIXED
-       current1 += (4 * count1);
-       current2 += (4 * count2);
-#endif /* if DNS_RDATASET_FIXED */
-
        while (count1-- > 0) {
                rdata_from_slab(&current1, rdclass, type, &rdata1);
                rdata_from_slab(&current2, rdclass, type, &rdata2);
@@ -1162,14 +906,6 @@ dns_rdatasetmethods_t dns_rdataslab_rdatasetmethods = {
 
 #define DNS_RDATASET_LENGTH 2;
 
-#if DNS_RDATASET_FIXED
-#define DNS_RDATASET_ORDER 2
-#define DNS_RDATASET_COUNT (count * 4)
-#else /* !DNS_RDATASET_FIXED */
-#define DNS_RDATASET_ORDER 0
-#define DNS_RDATASET_COUNT 0
-#endif /* DNS_RDATASET_FIXED */
-
 static void
 rdataset_disassociate(dns_rdataset_t *rdataset DNS__DB_FLARG) {
        dns_db_t *db = rdataset->slab.db;
@@ -1188,18 +924,12 @@ rdataset_first(dns_rdataset_t *rdataset) {
                return ISC_R_NOMORE;
        }
 
-       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) == 0) {
-               raw += DNS_RDATASET_COUNT;
-       }
-
        /*
         * iter_count is the number of rdata beyond the cursor
         * position, so we decrement the total count by one before
         * storing it.
         *
-        * If DNS_RDATASETATTR_LOADORDER is not set 'raw' points to the
-        * first record.  If DNS_RDATASETATTR_LOADORDER is set 'raw' points
-        * to the first entry in the offset table.
+        * 'raw' points to the first record.
         */
        rdataset->slab.iter_pos = raw + DNS_RDATASET_LENGTH;
        rdataset->slab.iter_count = count - 1;
@@ -1220,15 +950,9 @@ rdataset_next(dns_rdataset_t *rdataset) {
         * Skip forward one record (length + 4) or one offset (4).
         */
        unsigned char *raw = rdataset->slab.iter_pos;
-#if DNS_RDATASET_FIXED
-       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) == 0)
-#endif /* DNS_RDATASET_FIXED */
-       {
-               uint16_t length = peek_uint16(raw);
-               raw += length;
-       }
-       rdataset->slab.iter_pos = raw + DNS_RDATASET_ORDER +
-                                 DNS_RDATASET_LENGTH;
+       uint16_t length = peek_uint16(raw);
+       raw += length;
+       rdataset->slab.iter_pos = raw + DNS_RDATASET_LENGTH;
 
        return ISC_R_SUCCESS;
 }
@@ -1247,19 +971,9 @@ rdataset_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) {
         * Find the start of the record if not already in iter_pos
         * then skip the length and order fields.
         */
-#if DNS_RDATASET_FIXED
-       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) != 0) {
-               unsigned int offset;
-               offset = ((unsigned int)raw[0] << 24) +
-                        ((unsigned int)raw[1] << 16) +
-                        ((unsigned int)raw[2] << 8) + (unsigned int)raw[3];
-               raw = rdataset->slab.raw + offset;
-       }
-#endif /* if DNS_RDATASET_FIXED */
-
        length = peek_uint16(raw);
 
-       raw += DNS_RDATASET_ORDER + DNS_RDATASET_LENGTH;
+       raw += DNS_RDATASET_LENGTH;
 
        if (rdataset->type == dns_rdatatype_rrsig) {
                if (*raw & DNS_RDATASLAB_OFFLINE) {
index b22b28e817d4d9c1a80cfad0d51d4a7219f1715c..6d4ea151b2bcd764a0db11d3fa93dcf328deb821 100644 (file)
@@ -103,7 +103,6 @@ dns_rriterator_first(dns_rriterator_t *it) {
                dns_rdatasetiter_current(it->rdatasetit, &it->rdataset);
                dns_rdataset_getownercase(&it->rdataset,
                                          dns_fixedname_name(&it->fixedname));
-               it->rdataset.attributes |= DNS_RDATASETATTR_LOADORDER;
                it->result = dns_rdataset_first(&it->rdataset);
                return it->result;
        }
@@ -151,7 +150,6 @@ dns_rriterator_nextrrset(dns_rriterator_t *it) {
        dns_rdatasetiter_current(it->rdatasetit, &it->rdataset);
        dns_rdataset_getownercase(&it->rdataset,
                                  dns_fixedname_name(&it->fixedname));
-       it->rdataset.attributes |= DNS_RDATASETATTR_LOADORDER;
        it->result = dns_rdataset_first(&it->rdataset);
        return it->result;
 }
index 6762fbca86a4b7c864e57ae12a21ed0f5967fd67..f9ec36afa688f2b00062c84dd4e86e890014d6d1 100644 (file)
@@ -165,17 +165,6 @@ check_orderent(const cfg_obj_t *ent) {
                if (result == ISC_R_SUCCESS) {
                        result = ISC_R_FAILURE;
                }
-       } else if (strcasecmp(cfg_obj_asstring(obj), "fixed") == 0) {
-#if DNS_RDATASET_FIXED
-               if ((ent->pctx->flags & CFG_PCTX_NODEPRECATED) == 0) {
-                       cfg_obj_log(obj, ISC_LOG_WARNING,
-                                   "rrset-order: order 'fixed' is deprecated");
-               }
-#else
-               cfg_obj_log(obj, ISC_LOG_WARNING,
-                           "rrset-order: order 'fixed' was disabled at "
-                           "compilation time");
-#endif /* if !DNS_RDATASET_FIXED */
        } else if (strcasecmp(cfg_obj_asstring(obj), "random") != 0 &&
                   strcasecmp(cfg_obj_asstring(obj), "cyclic") != 0 &&
                   strcasecmp(cfg_obj_asstring(obj), "none") != 0)
index 36441dab5749b0d980114ffbcf91d9164a5f19db..6460b790490924ddd7fb118a3508167888105d22 100644 (file)
@@ -2198,7 +2198,6 @@ query_setorder(query_ctx_t *qctx, dns_name_t *name, dns_rdataset_t *rdataset) {
                rdataset->attributes |= dns_order_find(
                        order, name, rdataset->type, rdataset->rdclass);
        }
-       rdataset->attributes |= DNS_RDATASETATTR_LOADORDER;
 }
 
 /*