]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Refactor the DNS_RDATASET_FIXED code to use constants instead of ifdefs
authorOndřej Surý <ondrej@sury.org>
Tue, 16 Apr 2019 09:10:22 +0000 (11:10 +0200)
committerOndřej Surý <ondrej@sury.org>
Wed, 17 Apr 2019 09:35:19 +0000 (11:35 +0200)
(cherry picked from commit 4edbb773a172a7811d7af7a53a29841f23151b31)

lib/dns/rbtdb.c

index b34bd6cff24726fe29b2cbaec892351f221ff734..70022c139166a0eb55938888267e47b6f2b834c3 100644 (file)
@@ -991,6 +991,17 @@ hexdump(const char *desc, unsigned char *data, size_t size) {
 }
 #endif
 
+/* Fixed RRSet helper macros */
+
+#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 */
 
 /*
  * DB Routines
@@ -2621,18 +2632,10 @@ setnsec3parameters(dns_db_t *db, rbtdb_version_t *version) {
                         */
                        raw = (unsigned char *)header + sizeof(*header);
                        count = raw[0] * 256 + raw[1]; /* count */
-#if DNS_RDATASET_FIXED
-                       raw += count * 4 + 2;
-#else
-                       raw += 2;
-#endif
+                       raw += DNS_RDATASET_COUNT + DNS_RDATASET_LENGTH;
                        while (count-- > 0U) {
                                length = raw[0] * 256 + raw[1];
-#if DNS_RDATASET_FIXED
-                               raw += 4;
-#else
-                               raw += 2;
-#endif
+                               raw += DNS_RDATASET_ORDER + DNS_RDATASET_LENGTH;
                                region.base = raw;
                                region.length = length;
                                raw += length;
@@ -3444,20 +3447,12 @@ valid_glue(rbtdb_search_t *search, dns_name_t *name, rbtdb_rdatatype_t type,
        header = search->zonecut_rdataset;
        raw = (unsigned char *)header + sizeof(*header);
        count = raw[0] * 256 + raw[1];
-#if DNS_RDATASET_FIXED
-       raw += 2 + (4 * count);
-#else
-       raw += 2;
-#endif
+       raw += DNS_RDATASET_COUNT + DNS_RDATASET_LENGTH;
 
        while (count > 0) {
                count--;
                size = raw[0] * 256 + raw[1];
-#if DNS_RDATASET_FIXED
-               raw += 4;
-#else
-               raw += 2;
-#endif
+               raw += DNS_RDATASET_ORDER + DNS_RDATASET_LENGTH;
                region.base = raw;
                region.length = size;
                raw += size;
@@ -3809,18 +3804,11 @@ matchparams(rdatasetheader_t *header, rbtdb_search_t *search)
 
        raw = (unsigned char *)header + sizeof(*header);
        count = raw[0] * 256 + raw[1]; /* count */
-#if DNS_RDATASET_FIXED
-       raw += count * 4 + 2;
-#else
-       raw += 2;
-#endif
+       raw += DNS_RDATASET_COUNT + DNS_RDATASET_LENGTH;
+
        while (count-- > 0) {
                rdlen = raw[0] * 256 + raw[1];
-#if DNS_RDATASET_FIXED
-               raw += 4;
-#else
-               raw += 2;
-#endif
+               raw += DNS_RDATASET_ORDER + DNS_RDATASET_LENGTH;
                region.base = raw;
                region.length = rdlen;
                dns_rdata_fromregion(&rdata, search->rbtdb->common.rdclass,
@@ -8815,12 +8803,11 @@ rdataset_first(dns_rdataset_t *rdataset) {
                return (ISC_R_NOMORE);
        }
 
-#if DNS_RDATASET_FIXED
-       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) == 0)
-               raw += 2 + (4 * count);
-       else
-#endif
-               raw += 2;
+       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) == 0) {
+               raw += DNS_RDATASET_COUNT;
+       }
+
+       raw += DNS_RDATASET_LENGTH;
 
        /*
         * The privateuint4 field is the number of rdata beyond the
@@ -8855,16 +8842,14 @@ rdataset_next(dns_rdataset_t *rdataset) {
         */
        raw = rdataset->private5;
 #if DNS_RDATASET_FIXED
-       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) == 0) {
-#endif
+       if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) == 0)
+#endif /* DNS_RDATASET_FIXED */
+       {
                length = raw[0] * 256 + raw[1];
                raw += length;
-#if DNS_RDATASET_FIXED
        }
-       rdataset->private5 = raw + 4;           /* length(2) + order(2) */
-#else
-       rdataset->private5 = raw + 2;           /* length(2) */
-#endif
+
+       rdataset->private5 = raw + DNS_RDATASET_ORDER + DNS_RDATASET_LENGTH;
 
        return (ISC_R_SUCCESS);
 }
@@ -8872,9 +8857,6 @@ rdataset_next(dns_rdataset_t *rdataset) {
 static void
 rdataset_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) {
        unsigned char *raw = rdataset->private5;        /* RDATASLAB */
-#if DNS_RDATASET_FIXED
-       unsigned int offset;
-#endif
        unsigned int length;
        isc_region_t r;
        unsigned int flags = 0;
@@ -8887,18 +8869,18 @@ rdataset_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) {
         */
 #if DNS_RDATASET_FIXED
        if ((rdataset->attributes & DNS_RDATASETATTR_LOADORDER) != 0) {
+               unsigned int offset;
                offset = (raw[0] << 24) + (raw[1] << 16) +
                         (raw[2] << 8) + raw[3];
                raw = rdataset->private3;
                raw += offset;
        }
 #endif
+
        length = raw[0] * 256 + raw[1];
-#if DNS_RDATASET_FIXED
-       raw += 4;
-#else
-       raw += 2;
-#endif
+
+       raw += DNS_RDATASET_ORDER + DNS_RDATASET_LENGTH;
+
        if (rdataset->type == dns_rdatatype_rrsig) {
                if (*raw & DNS_RDATASLAB_OFFLINE)
                        flags |= DNS_RDATA_OFFLINE;