}
#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
*/
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;
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;
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,
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
*/
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);
}
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;
*/
#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;